我想使用以下函数遍历多维数组,然后遍历限制列表
def H(x, y, low, upp): #x and y are multidim. arrays
a = np.ones(x.shape)
for index in np.ndindex(x.shape):
if x[index] >= low and x[index] < upp:
a[index] = y[index]
else:
a[index] = 0
return a
l_outputs = []
for i in range(list_of_limits.shape[0]):
if list_of_limits[i] != 360:
ans = H(x_array, y_array, list_of_limits[i], list_of_limits[i+1])
l_outputs.append(ans)
当我尝试使用较小的数组(例如[4、5、3])作为输入时,该函数和代码会完美运行,但是一旦我尝试使用较大的数组(例如[124、10、241、320]),它就会运行很长时间我被“杀死”,整个过程被杀死,没有任何输出。
我正在使用的计算机是高性能计算机。因此,我的代码(循环或函数)存在问题,是否有更好的方法来做到这一点并节省运行时间或如何运行脚本?
示例:
a = np.array([220,230, 240, 250, 260 ,270 ,280, 290, 300, 310, 320, 330,340, 350, 360, 370, 380, 390,400 ,410 ,420 ,430, 240, 250, 260 ,270 ,310, 320, 330, 410 ,420 ,430, 240, 230, 240, 250, 260 ,270, 420 ,430, 240, 360, 370, 380, 270, 420 ,430, 240, 360, 260,270 ,310, 320, 330,380, 270, 230, 240, 250, 420])
a = a.reshape(4, 5, 3)
b = np.arange(60).reshape(4, 5, 3
ans = H(a, b, 260, 280)
print(ans)
[[[ 0. 0. 0.]
[ 0. 4. 5.]
[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]]
[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]
[24. 25. 0.]
[ 0. 0. 0.]]
[[ 0. 0. 0.]
[ 0. 0. 0.]
[36. 37. 0.]
[ 0. 0. 0.]
[ 0. 0. 44.]]
[[ 0. 0. 0.]
[ 0. 49. 50.]
[ 0. 0. 0.]
[ 0. 55. 0.]
[ 0. 0. 0.]]]