Python 迭代数组并对元素进行计算

Python 迭代数组并对元素进行计算,python,numpy,Python,Numpy,我有一个数组,我想在遍历它时对特定元素求和。我很难找到一种方法来实现这个循环。 阵列形状为(25,25) 我想打印出每个迭代的结果,如下所示 print(array[23][0]+array[23][1]) # 159159 + 148887 = 308046 print(array[22][0]+array[22][1]+array[22][2]) #132633 + 124073 + 131357 = 388063 print(array[21][0]+array[21][1]+array[

我有一个数组,我想在遍历它时对特定元素求和。我很难找到一种方法来实现这个循环。 阵列形状为(25,25)

我想打印出每个迭代的结果,如下所示

print(array[23][0]+array[23][1]) # 159159 + 148887 = 308046
print(array[22][0]+array[22][1]+array[22][2]) #132633 + 124073 + 131357 = 388063
print(array[21][0]+array[21][1]+array[21][2]+array[21][3]) # 92843 +  86851 + 91950 + 98232 = 369876 
将每个元素表示为
数组[i][j]
,正如您在每次迭代i-1中看到的那样,j的“长度”增加了一个。
我是否可以使用循环来完成此任务?谢谢

试试这个:

for i, sub in enumerate(reversed(array)):
    print(sum(sub[:i]))
例如,如果

array = [[ 1,  2,  3,  4,  5],
         [ 6,  7,  8,  9, 10],
         [11, 12, 13, 14, 15],
         [16, 17, 18, 19, 20],
         [21, 22, 23, 24, 25]]
输出将是

0    # last row, no elements summed
16   # 16 = 16
23   # 11 + 12 = 23
21   # 6 + 7 + 8 = 21
10   # 1 + 2 + 3 + 4 = 10
您可能只需要使用,然后是一个。这将给出数据的每一行的总和。如果你需要的话,可以很容易地修改成上面的三角形

print(np.sum(np.tril(array), axis=0))

第三个和第二个共享相同的
i
。你是说
23,22,21
?为什么你很难循环索引?@knh190是的,你是对的,我已经编辑了这个问题,如果你使用
numpy
state so<代码>数组不明确。另外,请尝试使用
arr[23,0]
类型的索引。谢谢,但我在第二行
TypeError上收到一个错误:“numpy.int64”对象不可调用
@Osca我无法重现该错误。你确定键入的代码正确吗?是的,我复制粘贴代码。即使对于您制作的示例数组,我也收到了相同的错误。我用的是Python3谢谢,但我想打印每一层三角形的总和,而不仅仅是整个上三角形的总和
应该在
np.tril
@Osca之外,这就是它返回的结果。我编辑了这篇文章,使之更加清晰。
print(np.sum(np.tril(array), axis=0))
In [661]: arr = np.arange(1,17).reshape(4,4)
In [662]: arr
Out[662]: 
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12],
       [13, 14, 15, 16]])

In [666]: for i in range(3,-1,-1):
     ...:     c = arr[i,:4-i]
     ...:     print(c.sum(), c)
     ...:     
13 [13]
19 [ 9 10]
18 [5 6 7]
10 [1 2 3 4]