通过相应的值在另一个2-d阵列乘以在2 d阵列中的每个值

问题描述 投票:1回答:2

正如标题我试图通过在另一个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到我所需要的单位)。任何帮助或建议将非常感谢!

python arrays numpy multidimensional-array multiplication
2个回答
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]]

0
投票

您正在执行element-wise multiplication, which is a numpy method

e_data = np.multiply(e_data, sens_function)
© www.soinside.com 2019 - 2024. All rights reserved.