一、Numpy的切片
1、格式
数组[起始:终止:步长]
2、缺省值
缺省起始:步长为正,首;步长为负,尾
缺省终止:步长为正,尾后;步长为负,首前
缺省步长:1
3、端部切片
靠近端部的一个或几个连续的维度使用缺省切片,可以用“…”表示
- print(a[3:6]): 起始包括终止不包括:有指定起始值,则不包括起始值,即4到6包括6
- print(a[-4:-7:-1]) :步长为-1,起始是倒数第3个即7(不包括),终止是倒数第6个即4(包括)
4、练习代码
import numpy as np
b = np.arange(1, 25).reshape(2, 3, 4)
'''
[[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[13 14 15 16]
[17 18 19 20]
[21 22 23 24]]]
'''
print(b[:, 0, 0])
print(b[0, :, :])
print(b[0, 1, ::2])
print(b[:, :, 1])
print(b[:, 1])
print(b[-1, 1:, 2:])
二、数组变维
1、视图变维: 针对一个数组对象获取其不同维度的视图数组
reshape(新维度)——>数组的新维度视图
ravel()——>数组的一维视图
2、复制变维: 针对一个数组对象获取其不同维度的副本
flatten()——>数组的一维副本
实际上在内部,改变维度其实是重新创建了一个对象,指向原来那个对象包含数据的内存地址
3、就地变维: 直接改变某个数组本身的维度
数组.shape = 新维度
数组.resize(新维度)
4、视图转置: 行列互换,行数变成列数,列数变成行数
数组.transpose()——>数组的转置视图
数组.T:转置视图属性来转置
5、练习代码
import numpy as np
a = np.arange(1, 9)
b = a.reshape(2, 4)
c = b.reshape(2, 2, 2)
d = c.ravel()
e = b.flatten()
a += 10
f = b.reshape(2, 2, 2).copy()
b += 10
a.shape = (2, 2, 2)
a.resize(2, 4)
g = a.T
print(g)
三、组合与拆分
1、vstack与vsplit
stack就是栈(堆叠)的意思,split就是分割的意思。
1)垂直组合:numpy.vstack((上,下))
2)垂直拆分:numpy.vsplit(数组,份数)——>子数组集合
3)水平组合:numpy.hstack((左,右))
4)水平拆分:numpy.hsplit(数组,份数)——>子数组集合
5)深度组合:numpy.dstack((前,后))
6)深度拆分:numpy.dsplit(数组,份数)——>子数组集合
7)行组合:numpy.row_stack((上,下))
8)列组合:numpy.column_stack((左,右))
2、练习代码
import numpy as np
a = np.arange(11, 20).reshape(3, 3)
b = np.arange(21, 30).reshape(3, 3)
c = np.vstack((a, b))
a, b = np.vsplit(c, 2)
c = np.hstack((a, b))
a, b = np.hsplit(c, 2)
c = np.dstack((a, b))
'''深度组合的结果
[[[11 21]
[12 22]
[13 23]]
[[14 24]
[15 25]
[16 26]]
[[17 27]
[18 28]
[19 29]]]
'''
a, b = np.dsplit(c, 2)
a = a.ravel()
b = b.ravel()
c = np.row_stack((a, b))
c = np.column_stack((a, b))
print(c)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)