合并多个数组

时间:2019-01-22 16:54:01

标签: python arrays list numpy

我有一个包含三个数组的列表:

[
    array([1, 2, 3], dtype=object), 
    array([4, 5, 6], dtype=object), 
    array([7, 8, 9], dtype=object)
]

我想把它变成这样:

[1,2,3,4,5,6,7,8,9]

或类似的内容:

([1,2,3],[4,5,6],[7,8,9])

但是似乎我无法使用np.concatenate来合并它们。是因为dtype=object吗?

3 个答案:

答案 0 :(得分:1)

numpy.concatenate()itertools.chain.from_iterable(),两者都应使数组变平:

import numpy as np
# from itertools import chain

arr = [np.array([1, 2, 3], dtype=object), np.array([4, 5, 6], dtype=object), np.array([7, 8, 9], dtype=object)]

print(np.concatenate(arr))
# or print(list(chain.from_iterable(arr)))
# [1 2 3 4 5 6 7 8 9]

如果您需要有问题的第二个输出:

tuple(list(x) for x in arr)
# ([1, 2, 3], [4, 5, 6], [7, 8, 9])

答案 1 :(得分:1)

np.concatenate将适合您的情况:

>>> np.concatenate([array([1, 2, 3], dtype=object), array([4, 5, 6], dtype=object), array([7, 8, 9], dtype=object)])
array([1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=object)

>>>list(_)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

如果由于某种原因而没有,请提供您得到的例外情况

答案 2 :(得分:1)

要展平数组列表

from numpy import array
temp=[array([1, 2, 3], dtype=object), array([4, 5, 6], dtype=object), array([7, 8, 9], dtype=object)]
numpy.array(temp).flatten() #array([1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=object)

要将其进一步转换为列表

numpy.array(temp).flatten().tolist() #[1, 2, 3, 4, 5, 6, 7, 8, 9]

如果您需要列表清单

from numpy import array
temp=[array([1, 2, 3], dtype=object), array([4, 5, 6], dtype=object), array([7, 8, 9], dtype=object)]
[x.tolist() for x in temp]

tuple(x.tolist() for x in temp) #([1, 2, 3], [4, 5, 6], [7, 8, 9])