W
e
l
c
o
m
e
: )

6.Numpy变换数组形态

变换数组形态:

方法 概述
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.]])]
posted @ 2020-03-07 13:58  水一RAR  阅读(132)  评论(0编辑  收藏  举报