合并循环返回的numpy数组
我有一个循环,它生成了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])