python将多个数组添加到一起

python将多个数组添加到一起,python,arrays,indexing,sum,Python,Arrays,Indexing,Sum,我有多个5x5数组,它们包含在一个大数组中-总体形状为:5 x 5 x 29。我想对每个5 x 5数组求和,生成一个数组,而不是29个数组 我知道你可以按照以下思路做一些事情: 新数据=数据1[:,:,0]+data1[:,:,1]+…+数据1[:,:,29] 但是,这对于大型阵列来说非常麻烦。有更简单的方法吗?您可以使用for循环。像这样: import numpy as np new_data = np.zeros((5, 5)) for i in range(29): new_d

我有多个5x5数组,它们包含在一个大数组中-总体形状为:5 x 5 x 29。我想对每个5 x 5数组求和,生成一个数组,而不是29个数组

我知道你可以按照以下思路做一些事情:

新数据=数据1[:,:,0]+data1[:,:,1]+…+数据1[:,:,29] 但是,这对于大型阵列来说非常麻烦。有更简单的方法吗?

您可以使用for循环。像这样:

import numpy as np

new_data = np.zeros((5, 5))
for i in range(29):
    new_data += data1[:,:,i] 

假设您使用的是NumPy,您应该能够通过以下方式完成此操作:

In [13]: data1 = np.arange(100).reshape(5, 5, 4) # For example

In [14]: data1[:,:,0] + data1[:,:,1] + data1[:,:,2] + data1[:,:,3] # Bad way
Out[14]:
array([[  6,  22,  38,  54,  70],
       [ 86, 102, 118, 134, 150],
       [166, 182, 198, 214, 230],
       [246, 262, 278, 294, 310],
       [326, 342, 358, 374, 390]])

In [15]: data1.sum(axis=2) # Good way
Out[15]:
array([[  6,  22,  38,  54,  70],
       [ 86, 102, 118, 134, 150],
       [166, 182, 198, 214, 230],
       [246, 262, 278, 294, 310],
       [326, 342, 358, 374, 390]])

如果您说您有一个数组列表,那么使用for循环

for i in range(29):
    new_data+= data1[:,:,i]

如果你说你有一个张量或一些ND数组,你应该回顾和研究numpy的

,这正是循环设计的目的。这可能不起作用,因为新的_数据是一个Python列表,+=将只是追加。不,你仍然在追加列表。事实上,现在您正在制作不必要的列表副本。无论如何,OP使用的是数组。列表和数组不能很好地混合。新_数据的定义是什么?它们可能已经有了新_数据数组的定义。我不太确定这是真的。在我看来,这是一个新的变量。无论如何,你可以把它做成一个5x5的带np的零数组。零:新_数据的定义是什么?浮点数的定义是什么?这似乎只是在添加整数。@M.Simpson我不知道你的意思。无论数据类型如何,这都应该有效。你能举个例子吗?a=[[1.5 1.5 1.5][1.5 1.5][1.5 1.5][1.5 1.5][1.5 1.5 1.5][1.5 1.5 1.5][1.5 1.5][1.5 1.5][1.5][1.5][1.5][1.5][1.5][1.5][1.5][1.5][1.5][1.5][2][2][2][2][2][2]。但是,a=[[11][11][11][11]]b=[[11][11][11][11]]both=np.zero[3,3,2]both[:,:,0]=a both[:,:,1]=b print both.sumaxis=3[[2 2][2][2]s@M.Simpson对不起,这有点难读。你能更新你的问题吗,或者改用类似Pastebin的东西吗?