数组能分割,同样能把数组进行合并
合并数组的方法
NumPy 有下列几种合并数组元素的方法:
| 方法 | 参数 | 说明 |
|---|---|---|
| numpy.concatenate() | arrays | 将多个【同形状】的数组,依次链接为新数组 |
| numpy.stack() | arrays | 将多个【同形状】的数组,依次合并为新数组 |
| numpy.hstack()、numpy.vstack() | arrays | 将多个「同形状」的数组,「水平」或「垂直」合并为新的数组。 |
numpy.concatenate()
numpy.concatenate() 会将多个「同样形狀」的数组,依序连接为新的数组,如果数组形狀不同,合并会发生错误。下方將 a、b、c 三个数组,依序连接为新数组 ( 同样都是一维数组 )
import numpy as np
a = np.array([1])
b = np.array([2,2])
c = np.array([3,3,3])
d = np.concatenate((a, b, c))
print(d) # [1 2 2 3 3 3]
下方的代码会将 a 和 b 两个分別是 3x2 和 2x2 的数组,连接成一个新的 5x2 数组
import numpy as np
a = np.array([[1,1],[2,2],[3,3]])
b = np.array([[4,4],[5,5]])
c = np.concatenate((a, b))
print(c)
'''
[[1 1]
[2 2]
[3 3]
[4 4]
[5 5]
[6 6]]
'''
numpy.concatenate() 还可以设置参数 axis,0 表示 row 轴 (默认值 ),1 为 column 轴,如果数组形狀不同,合并会发生错误
import numpy as np
a = np.array([[1,1],[2,2],[3,3]]) # 3x2 数组
b = np.array([[4,4],[5,5],[6,6]]) # 3x2 数组
# b = np.array([[4,4],[5,5],[6,6,6]]) # 如果 b 的形狀和 a 不同,会发生错误
c = np.concatenate((a, b), axis=0) # axis 设置为 0
print(c) # 连接成 6x2 数组
'''
[[1 1]
[2 2]
[3 3]
[4 4]
[5 5]
[6 6]]
'''
d = np.concatenate((a, b), axis=1) # axis 设置为 1
print(d) # 连接成 3x4 数组
'''
[[1 1 4 4]
[2 2 5 5]
[3 3 6 6]]
'''
numpy.stack()
numpy.stack() 会将多个「同样形状」的数组,依序堆积为新的数组,如果数组形狀不同,合并会发生错误。下方的程式会将 a、b、c 三个形狀相同的 1x2 数组,依序合并为一个 1x6 的新数组。
import numpy as np
a = np.array([1,1])
b = np.array([2,2])
c = np.array([3,3])
d = np.concatenate((a, b, c))
print(d) # [1 1 2 2 3 3]
numpy.stack() 还可以设定参数 axis,0 表示 row 轴 ( 默认值 ),1 为 column 轴,如果数组形狀不同,合并会发生错误
import numpy as np
a = np.array([[1,1],[2,2],[3,3]]) # 3x2 的数组
b = np.array([[4,4],[5,5],[6,6]]) # 3x2 的陣列
c = np.stack((a, b), axis=0) # axis 设定为 0
print(c) # 堆积成为 2x3x2 的数组
'''
[[[1 1]
[2 2]
[3 3]]
[[4 4]
[5 5]
[6 6]]]
'''
d = np.stack((a, b), axis=1) # axis 设定为 1
print(d) # 堆积成为 3x2x2 的数组
'''
[[[1 1]
[4 4]]
[[2 2]
[5 5]]
[[3 3]
[6 6]]]
'''
numpy.hstack()、numpy.vstack()
numpy.hstack()、numpy.vstack() 会将多个「同形状」的数组,「水平」或「垂直」合并为新数组。
a = np.array([[1,1],[2,2],[3,3]]) # 3x2 数组
b = np.array([[4,4],[5,5],[6,6]]) # 3x2 数组
c = np.hstack((a, b)) # 水平合并
print(c) # 变成 3x4 的数组
'''
[[1 1 4 4]
[2 2 5 5]
[3 3 6 6]]
'''
d = np.vstack((a, b)) # 垂直合并
print(d) # 变成 6x2 的数组
'''
[[1 1]
[2 2]
[3 3]
[4 4]
[5 5]
[6 6]]
'''