将二维数组中的每个值乘以另一个二维数组中的对应值

时间:2019-02-02 23:40:13

标签: python arrays numpy multidimensional-array multiplication

正如标题所示,我正在尝试将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达到我需要的单位) 。任何帮助或建议,将不胜感激!

2 个答案:

答案 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)