假设我有两个一维数组,a 和 b,长度分别为 n+1 和 m+1。
我希望 c 是与 b 长度相同的数组,其元素等于所有 a 元素之和的 b 次方的正弦值。下面用伪代码编写。
c = sum(sine(a[0:n] ** b[0])), sum(sine(a[0:n] ** b[1])),
... sum(sine(a[0:n] ** b[m])))
有没有一种方法可以在不使用循环的情况下完成此任务?
(在编程方面有些缺乏经验,希望我的问题有意义。)
一个函数:
def function(a, b):
c = np.sum(np.sin(a ** b))
return c
最佳答案
您可以使用 numpy 广播对其进行矢量化:
np.sin(np.sum(a ** b[:,None], axis=1))
<小时/>
import numpy as np
a = np.arange(4)
b = np.arange(3)
np.sin(np.sum(a ** b[:,None], axis=1))
#array([-0.7568025 , -0.2794155 , 0.99060736])
np.sin(np.sum(a ** b[0]))
#-0.7568024953079282
np.sin(np.sum(a ** b[1]))
#-0.27941549819892586
关于python - numpy 数组求和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46429865/