- 处理数组的一项重要工 作就是改变数组的维度,包含提高数组的维度和降低数组的维度,还包括数组的转置Numpy
提供的大量API可以很轻松地完成这些数组的操作。 例如,通过 reshape 方法可以将一维数组变成二维、三维或者多维数组。 通过
ravel 方法或 flatten 方法可以将多维数组变成一维数组。改变数组的维度还可以直接设置 Numpy 数组的 shape
属性(元组类型),通过 resize 方法也可以改变数组的维度。
数组的拼接
- 水平数组组合
- 通过 hstack 函数可以将 两个或多个数组水平组合 起来形成一个数组
- 但数组水平组合必须要满足一个条件,就是所有参与水平组合的数组的行数必须相同,否则进行水平组合会抛出异常。
-
垂直数组拼接
- 通过 vstack 函数可以将两个或多个数组垂直组合起来形成一个数组
-
数组的拼接
函数 | 描述 |
---|---|
concatenate | 连接沿现有轴的数组序列 |
hstack | 水平堆叠序列中的数组(列方向) |
vstack | 竖直堆叠序列中的数组(行方向) |
numpy.concatenate 函数用于沿指定轴连接相同形状的两个或多个数组,格式如下: numpy.concatenate((a1, a2, …), axis) 其中参数 a1, a2, …指相同类型的数组;axis 指沿着它连接数组的轴,默认为 0(0为横向拼接,1为纵向拼接)。
numpy.hstack 它通过水平堆叠来生成数组。 numpy.vstack 它通过垂直堆叠来生成数组
🎯实战:
# coding: utf-8
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
b = np.array([['a', 'b', 'c'], ['d', 'e', 'f']])
print(b)
print(np.concatenate((a, b))) # 默认是横面拼接(垂直拼接, 接触面为水平), 等价于vstack
print('垂直方向拼接 相当于vstack')
print(np.concatenate([a, b], axis=0))
print('水平方向拼接 相当于hstack')
print(np.concatenate([a, b], axis=1))
# vstack()与hstack()实现二维数组的拼接
a2 = np.array([[1, 2, 3], [4, 5, 6]])
print(a2)
b2 = np.array([['a', 'b', 'c'], ['d', 'e', 'f']])
print(b2)
print('X轴方向接面及垂直堆叠')
print(np.vstack([a, b]))
print('y轴方向接面及水平堆叠')
print(np.hstack([a, b]))
"""注意!如果拼接的行和列数目不一致, 则会报错"""
# 三维数组的拼接
aa = np.arange(1, 37).reshape(3, 4, 3)
print('数组aa shape:', aa.shape)
bb = np.arange(101, 137).reshape(3, 4, 3)
print('数组bb shape:', bb.shape)
print('concatenate((aa, bb), axis=0)结果:')
print(np.concatenate((aa, bb), axis=0).shape)
print('concatenate((aa, bb), axis=1)结果:')
print(np.concatenate((aa, bb), axis=1).shape)
result:
[[1 2 3]
[4 5 6]]
[['a' 'b' 'c']
['d' 'e' 'f']]
[['1' '2' '3']
['4' '5' '6']
['a' 'b' 'c']
['d' 'e' 'f']]
垂直方向拼接 相当于vstack
[['1' '2' '3']
['4' '5' '6']
['a' 'b' 'c']
['d' 'e' 'f']]
水平方向拼接 相当于hstack
[['1' '2' '3' 'a' 'b' 'c']
['4' '5' '6' 'd' 'e' 'f']]
[[1 2 3]
[4 5 6]]
[['a' 'b' 'c']
['d' 'e' 'f']]
X轴方向接面及垂直堆叠
[['1' '2' '3']
['4' '5' '6']
['a' 'b' 'c']
['d' 'e' 'f']]
y轴方向接面及水平堆叠
[['1' '2' '3' 'a' 'b' 'c']
['4' '5' '6' 'd' 'e' 'f']]
数组aa shape: (3, 4, 3)
数组bb shape: (3, 4, 3)
concatenate((aa, bb), axis=0)结果:
(6, 4, 3)
concatenate((aa, bb), axis=1)结果:
(3, 8, 3)
进程已结束,退出代码0