Python 我试图在多个范围内迭代,从另一个范围创建多维数据数组
我有: 如何获得一个数组,该数组是一个数与其下的数之和:Python 我试图在多个范围内迭代,从另一个范围创建多维数据数组,python,arrays,numpy,multidimensional-array,Python,Arrays,Numpy,Multidimensional Array,我有: 如何获得一个数组,该数组是一个数与其下的数之和: >>> import numpy as np >>> a = np.arange(25).reshape(5, 5) >>> a array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 2
>>> import numpy as np
>>> a = np.arange(25).reshape(5, 5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
我想通过迭代原始数组来实现这一点。比如:
array([[7, 9, 11,], # 1+6=7 , 2+7=9 , 3+8=11
[17, 19, 21,],
[27, 29, 31,]])
尽管出于语法原因,这不起作用。有人能告诉我正确的语法吗?我不是一个专业的程序员,对Python还是新手。提前感谢。使用切片选择(1)除最后一行之外的所有数组,以及(2)除第一行之外的所有数组。然后添加它们
b[x,y] = [a[x,y]+a[x+1,y] for x in range(0,3) for y in range(1,4)] #ERROR!
谢谢,这很有帮助-有没有迭代的方法?我正在玩更大的矩阵,希望有一个更普遍的解决方案。(例如,如果我想得到元素[x,y,z]并将其乘以元素[x+n,y,z])你真正想做的是什么?@user2974839你可以用这个答案来做,它比迭代更快。将
1
更改为n
,并用更多:
或单个。
:a[:-n,…]*a[n:,…]
(相当于:a[:-n,:,:]*a[n:,:,:]
)@askewchan和相当于a[:-n]*a[n:]
也一样。@VebjornLjosa我只是想通过玩东西来学习Python。除了自我教育,我不想完成一项特定的任务。
>>> a[:-1,:] + a[1:,:]
array([[ 5, 7, 9, 11, 13],
[15, 17, 19, 21, 23],
[25, 27, 29, 31, 33],
[35, 37, 39, 41, 43]])