一周学会Pandas2 Python数据处理与分析-NumPy数组重建
锋哥原创的Pandas2 Python数据处理与分析 视频教程:
2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili
尺寸修改reshape方法
数组在创建的时候就已经有了,但是在后续过程中也可以进行重建,在之前使用的 reshape函数就是对数组进行尺寸上的修改。 在这里需要说明的是 reshape 中的参数就是重建后的尺寸,但是对于一些时候,不知道所有轴的尺寸就可以使用-1来进行自动调整。
a = np.arange(24)
print(a)
print(a.reshape(3, 2, -1))
运行结果:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
[[[ 0 1 2 3]
[ 4 5 6 7]]
[[ 8 9 10 11]
[12 13 14 15]]
[[16 17 18 19]
[20 21 22 23]]]
对于一个三维的数组,可以发现其 第三个轴有 4个数,但这个数是自动算出来的。
合并与拆分
对于多个数组也可以进行合并与拆分操作
a4 = np.arange(12).reshape(3, 4)
b4 = np.arange(12, 24).reshape(3, 4)
print("a4", a4)
print("b4", b4)
print("垂直合并", np.vstack((a4, b4)))
print("水平合并", np.hstack((a4, b4)))
运行结果:
a4 [[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
b4 [[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
垂直合并 [[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
水平合并 [[ 0 1 2 3 12 13 14 15]
[ 4 5 6 7 16 17 18 19]
[ 8 9 10 11 20 21 22 23]]
当然这里是简单的一个水平合并和竖直合并,一个隐形的条件就是竖直合并时,需要保证两个数组第二个轴的大小一致,并且保持不变,而水平合并时需要保证两个数组的第一个轴的大小一致。 或者对应一般的合并也可以使用concatenate([a,b],axis=),把两个数组按照一定的轴合并,在哪个轴合并就是哪个轴的尺寸发生变化。
a4 = np.arange(12).reshape(3, 4)
b4 = np.arange(12, 24).reshape(3, 4)
print("a4", a4)
print("b4", b4)
print("第一轴合并:", np.concatenate([a4, b4], axis=0))
print("第二轴合并:", np.concatenate([a4, b4], axis=1))
运行结果:
a4 [[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
b4 [[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
[[ 0 1 2 3 12 13 14 15]
[ 4 5 6 7 16 17 18 19]
[ 8 9 10 11 20 21 22 23]]
对于两个数组可以进行合并,那么一个数组也可以拆成两个数组,使用split(array,[],axis=)进行拆分:
a5 = np.arange(36).reshape(2, 2, 9)
print("a5", a5)
b5, c5, d5 = np.split(a5, [3, 6], axis=2)
print("b5", b5)
print("c5", c5)
print("d5", d5)
运行输出:
a5 [[[ 0 1 2 3 4 5 6 7 8]
[ 9 10 11 12 13 14 15 16 17]]
[[18 19 20 21 22 23 24 25 26]
[27 28 29 30 31 32 33 34 35]]]
b5 [[[ 0 1 2]
[ 9 10 11]]
[[18 19 20]
[27 28 29]]]
c5 [[[ 3 4 5]
[12 13 14]]
[[21 22 23]
[30 31 32]]]
d5 [[[ 6 7 8]
[15 16 17]]
[[24 25 26]
[33 34 35]]]
首先需要说明的是,split的参数有 要拆分的数组,在哪个位置进行拆分,[3,6]表示在3,4之间,6,7之间进行拆分, axis=2 表示对第三个轴进行拆分。