Python 如何有效地将numpy数组的每n个元素相加或相乘?
假设我有以下numpy数组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
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]
。你是对的-好主意!哇,谢谢你指出这一点!