正如标题我试图通过在另一个2D阵列的对应值乘以在2D阵列中的每个值。我能做到这一点,写了下面的代码吧。但是我的问题是,它为每一个二维数组包含1000个阵列包含15289号的时间太长。而且我有,因为我有三个二维阵列这样做了三次。目前,它正在一分钟都做的(大约20秒,运行下面的代码)。这是太久了,因为我有100组数据,通过我的整个脚本运行的每个包含3批这些二维阵列。如果我可以削减这20秒降低为一切运行顺利,将节省我很多时间,从长远来看!
e_data = [[i*j for i,j in y] for y in np.dstack((e_data,sens_function))]
e_data
是我射电流量值(任何射电天文学家在那里),并sens_function
是乘法其他数组(这将让我e_data
到我所需要的单位)。任何帮助或建议将非常感谢!
我认为你是使用嵌套for
循环和dstack
过于复杂。你可以只使用*
(乘)运算符。对于2D阵列,其将执行元素方式乘法。请看下面的例子:
e_data = np.arange(9).reshape(3,3)
print (arr1)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]
sens_function = np.arange(9).reshape(3,3)
print (arr2)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]
result = e_data*sens_function
print (result)
# [[ 0 1 4]
# [ 9 16 25]
# [36 49 64]]
您正在执行element-wise multiplication, which is a numpy method:
e_data = np.multiply(e_data, sens_function)