正如标题所示,我正在尝试将2d数组中的每个值乘以另一个2d数组中的对应值。我可以做到这一点,并为此编写了以下代码。但是我的问题是,每个二维数组包含1000个数组(包含15289个数字)需要花费很长时间。我必须做三遍,因为我有三个这样的2d数组。目前,所有这些操作都需要花费一分钟的时间(运行以下代码大约需要20秒)。这太长了,因为我要在整个脚本中运行100组数据,每个脚本包含3个这些2d数组。如果我可以减少这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
达到我需要的单位) 。任何帮助或建议,将不胜感激!
答案 0 :(得分:1)
我认为您使用嵌套的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]]
答案 1 :(得分:0)
您正在执行element-wise multiplication, which is a numpy method:
e_data = np.multiply(e_data, sens_function)