变换数组形态:
方法 |
概述 |
reshape |
重新设计形状 |
ravel |
将数组 转换为一维数组 |
flatten |
将数组转换为一维数组 C横向 F纵向 |
hstack |
横向堆叠 |
vstack |
纵向堆叠 |
concatenate |
数组的拼接 |
hsplit |
纵向分割 |
vsplit |
横向分割 |
split |
分割 方法 axis 参数 来控制 横向 纵向 |
举例:
reshape 变换形态:
arr7 = np.arange(12)
print(arr7)
print('----------')
# 将一个 一维数组 变换成 二维 三行四列的数组
arr8 = arr7.reshape(3, 4)
print(arr8)
# flatten('C') 横向转换为 一维数组
arr9 = arr7.reshape(3, 4).flatten('C')
print(arr9)
# flatten('F') 纵向转换为一维数组
arr_a = arr7.reshape(3, 4).flatten('F')
print(arr_a)
# 结果
[ 0 1 2 3 4 5 6 7 8 9 10 11]
----------
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
---------
[ 0 1 2 3 4 5 6 7 8 9 10 11]
[ 0 4 8 1 5 9 2 6 10 3 7 11]
revel 展开数组:
# 创建一个 二维数组
arr_a = np.arange(12).reshape(3, 4)
print(arr_a)
# 将二维数组 横向 转换为 一维数组
print(arr_a.ravel('C'))
# 将 二维数组 纵向 转换为 一维 数组
print(arr_a.ravel('F'))
# 执行结果
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[ 0 1 2 3 4 5 6 7 8 9 10 11]
[ 0 4 8 1 5 9 2 6 10 3 7 11]
hstack,vstack 横向堆叠 纵向堆叠:
arr9 = np.ones((3,4))
arr10 = 2* arr9
print(arr9)
print('-------')
print(arr10)
print('-------')
#
# # 横向堆叠
print(np.hstack((arr9, arr10)))
print('---------')
# # 纵向堆叠
print(np.vstack((arr9, arr10)))
# 执行结果
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
-------
[[2. 2. 2. 2.]
[2. 2. 2. 2.]
[2. 2. 2. 2.]]
-------
[[1. 1. 1. 1. 2. 2. 2. 2.]
[1. 1. 1. 1. 2. 2. 2. 2.]
[1. 1. 1. 1. 2. 2. 2. 2.]]
---------
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]
[2. 2. 2. 2.]
[2. 2. 2. 2.]
[2. 2. 2. 2.]]
concatenate数组的拼接:
arr1 = np.arange(10)
arr2 = 2 * np.arange(10)
print(arr1)
print(arr2)
# 纵向是 会报出 越界 错误 因为 这是一个 一维数组
# print(np.concatenate((arr1, arr2), axis=1))
print(np.concatenate((arr1, arr2), axis=0))
[0 1 2 3 4 5 6 7 8 9]
[ 0 2 4 6 8 10 12 14 16 18]
[ 0 1 2 3 4 5 6 7 8 9 0 2 4 6 8 10 12 14 16 18]
hsplit,vsplit 纵向切割 和 横向 切割:
arr2 = np.ones((4,4))
print(arr2)
# 纵向
print(np.hsplit(arr2, 2))
print('--------')
#横向
print(np.vsplit(arr2,4))
# 结果
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
[array([[1., 1.],
[1., 1.],
[1., 1.],
[1., 1.]]), array([[1., 1.],
[1., 1.],
[1., 1.],
[1., 1.]])]
--------
[array([[1., 1., 1., 1.]]), array([[1., 1., 1., 1.]]), array([[1., 1., 1., 1.]]), array([[1., 1., 1., 1.]])]
split切割:
arr2 = np.ones((4,4))
print(arr2)
print('----------')
print(np.split(arr2, 2, axis=1)) #横向分割
print('----------')
print(np.split(arr2, 4, axis=0)) #纵向分割
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
----------
[array([[1., 1.],
[1., 1.],
[1., 1.],
[1., 1.]]), array([[1., 1.],
[1., 1.],
[1., 1.],
[1., 1.]])]
----------
[array([[1., 1., 1., 1.]]), array([[1., 1., 1., 1.]]), array([[1., 1., 1., 1.]]), array([[1., 1., 1., 1.]])]