1.比较简单,直接上代码:
numpy提供了numpy.concatenate((a1,a2,...), axis=0)函数。能够一次完成多个数组的拼接。其中a1,a2,...是数组类型的参数,axis是按照第几维进行拼接,默认为0,可以不用写。
当然了,也可以把ndarray转换为list,再用append,extend进行拼接,最后再转回ndarray。但是,这样的时间成本就比较高了。
所以,要处理大规模的数据拼接,concatenate()效率更高。
#!/usr/bin/python3
import numpy as np
a = [[[1, 2, 3], [2, 3, 4], [3, 4, 5]],
[[2, 3, 4], [3, 4, 5], [4, 5, 6]],
[[3, 4, 5], [4, 5, 6], [5, 6, 7]]]
a = np.array(a)
print(type(a))
print(a.shape)
# <class 'numpy.ndarray'>
# (3, 3, 3)
b = [[[2, 2, 3], [2, 3, 4], [3, 4, 5]],
[[2, 3, 4], [3, 4, 5], [4, 5, 6]],
[[3, 4, 5], [4, 5, 6], [5, 7, 7]]]
b = np.array(b)
print(type(b))
print(b.shape)
# <class 'numpy.ndarray'>
# (3, 3, 3)
# concatenate((a1, a2, ...), axis=0, out=None)
c = np.concatenate((a, b), axis=0)
print(type(c))
print(c.shape)
print(c)
# <class 'numpy.ndarray'>
# (6, 3, 3)
# [[[1 2 3]
# [2 3 4]
# [3 4 5]]
#
# [[2 3 4]
# [3 4 5]
# [4 5 6]]
#
# [[3 4 5]
# [4 5 6]
# [5 6 7]]
#
# [[2 2 3]
# [2 3 4]
# [3 4 5]]
#
# [[2 3 4]
# [3 4 5]
# [4 5 6]]
#
# [[3 4 5]
# [4 5 6]
# [5 7 7]]]
c = np.concatenate((a, b), axis=1)
print(type(c))
print(c.shape)
print(c)
# <class 'numpy.ndarray'>
# (3, 6, 3)
# [[[1 2 3]
# [2 3 4]
# [3 4 5]
# [2 2 3]
# [2 3 4]
# [3 4 5]]
#
# [[2 3 4]
# [3 4 5]
# [4 5 6]
# [2 3 4]
# [3 4 5]
# [4 5 6]]
#
# [[3 4 5]
# [4 5 6]
# [5 6 7]
# [3 4 5]
# [4 5 6]
# [5 7 7]]]
c = np.concatenate((b, a), axis=0)
print(type(c))
print(c.shape)
print(c)
# <class 'numpy.ndarray'>
# (6, 3, 3)
# [[[2 2 3]
# [2 3 4]
# [3 4 5]]
#
# [[2 3 4]
# [3 4 5]
# [4 5 6]]
#
# [[3 4 5]
# [4 5 6]
# [5 7 7]]
#
# [[1 2 3]
# [2 3 4]
# [3 4 5]]
#
# [[2 3 4]
# [3 4 5]
# [4 5 6]]
#
# [[3 4 5]
# [4 5 6]
# [5 6 7]]]