您可以改进代码 – 3D 数组中的迭代吗?

我已经知道在 python 中对数组的迭代非常慢。如果可能,您能否改进此代码。我只想从 numpy 数组中获取值,这些值大于 constat (1.4) 否则设置为零。

def array_max(a):
   b = a
   for i in range(a.shape[0]):
      for j in range(a.shape[1]):
         for k in range(a.shape[2]):
            if a[i, j, k] <= 1.4:
               b[i,j,k] = 0
    return b

回答

您应该直接索引:

a[a < 1.4] = 0

该行b = a是多余的,因为它不制作副本,只是分配给一个新名称。

如果您想创建一个新数组而不是修改原始数组,您可以通过几种不同的方式来实现:

b = a.copy()
b[a < 1.4] = 0

或者

b = np.zeros_like(a)
mask = a >= 1.4
b[mask] = a[mask]

或者

b = np.where(a <= 1.4, 0, a)

以上是您可以改进代码 – 3D 数组中的迭代吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>