合并循环返回的numpy数组

7 投票
3 回答
39294 浏览
提问于 2025-04-17 23:59

我有一个循环,它生成了numpy数组:

for x in range(0, 1000):
   myArray = myFunction(x)

返回的数组总是一维的。我想把所有的数组合并成一个数组(同样是一维的)。

我试过以下方法,但失败了:

allArrays = []
for x in range(0, 1000):
   myArray = myFunction(x)
   allArrays += myArray

出现的错误是 ValueError: operands could not be broadcast together with shapes (0) (9095)。我该怎么做才能解决这个问题呢?

比如这两个数组:

[ 234 342 234 5454 34 6]
[ 23 2 1 4 55 34]

应该合并成这个数组:

[ 234 342 234 5454 34 6 23 2 1 4 55 34 ]

3 个回答

10

听起来你想使用 np.concatenate 这个功能:

arrays = [myFunction(x) for x in range(1000)]
allArrays = np.concatenate(arrays)
11

你需要了解返回数组的形状。假设,myArray的形状是(2, 4)。那么

allArrays = np.empty((0, 4))
for x in range(0, 1000):
    myArray = myFunction(x)
    allArrays = np.append(allArrays, myArray, axis = 0)
12

你可能是想说

allArrays = np.array([])
for x in range(0, 1000):
    myArray = myFunction(x)
    allArrays = np.concatenate([allArrays, myArray])

一种更简洁的方法(可以参考wim的回答)是使用列表推导式

allArrays = np.concatenate([myFunction(x) for x in range]) 

撰写回答