Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何有效地将numpy数组的每n个元素相加或相乘?_Python_Arrays_Numpy - Fatal编程技术网

Python 如何有效地将numpy数组的每n个元素相加或相乘?

Python 如何有效地将numpy数组的每n个元素相加或相乘?,python,arrays,numpy,Python,Arrays,Numpy,假设我有以下numpy数组 A = [1,2,3,4,5,6] 问题是否有一种快速的方法可以将a中的每N个元素相乘或相加,从而生成以下数组 B = [3*1, 2*4, 3*5, 4*6] C = [3+1, 2+4, 3+5, 4+6] 我可以通过滚动A,然后将其与原始A相加或相乘来实现这一点 T = np.roll(A,-2) B = (A*T)[0:4] C = (A*T)[0:4] 只是想知道是否有一种更为通灵/高效的方法来实现这一点?我还研究了np.add.reduceat

假设我有以下numpy数组

A = [1,2,3,4,5,6]
问题是否有一种快速的方法可以将a中的每N个元素相乘或相加,从而生成以下数组

B = [3*1, 2*4, 3*5, 4*6]
C = [3+1, 2+4, 3+5, 4+6]  
我可以通过滚动A,然后将其与原始A相加或相乘来实现这一点

T = np.roll(A,-2)
B = (A*T)[0:4]
C = (A*T)[0:4] 

只是想知道是否有一种更为通灵/高效的方法来实现这一点?我还研究了np.add.reduceat和np.multiply.reduceat,但它们似乎不允许跳过值。

您可以通过以下方式执行:

A = np.array([1, 2, 3, 4, 5, 6])
k = 2
B = A[:-k]
C = A[k:]
print(B * C)
print(B + C)
输出

[ 3  8 15 24]
[ 4  6  8 10]

干杯。

使用负指数
B=
可以简化为
B=A[:-k]
。你是对的-好主意!哇,谢谢你指出这一点!