wea*_*man 1 python arrays performance for-loop numpy
我已经知道在 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
Run Code Online (Sandbox Code Playgroud)
您应该直接索引:
a[a < 1.4] = 0
Run Code Online (Sandbox Code Playgroud)
该行b = a是多余的,因为它不制作副本,只是分配给一个新名称。
如果您想创建一个新数组而不是修改原始数组,您可以通过几种不同的方式来实现:
b = a.copy()
b[a < 1.4] = 0
Run Code Online (Sandbox Code Playgroud)
或者
b = np.zeros_like(a)
mask = a >= 1.4
b[mask] = a[mask]
Run Code Online (Sandbox Code Playgroud)
或者
b = np.where(a <= 1.4, 0, a)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |