前言
一、 Numpy的Reshape
二、 Numpy的Resize
说明:
reshape和resize 都可以改变数组的形状,但是reshape不改变原有数组的数据,resize可以改变原数组的数据
一、 Numpy的Reshape
1.shape是查看数据有多少行多少列
2.reshape()是数组array中的方法,这个方法是在不改变数据内容的情况下,改变一个数组的格式。(作用是将数据重新组织)
(1). order : 可选范围为{‘C’, ‘F’, ‘A’}。使用索引顺序读取a的元素,并按照索引顺序将元素放到变换后的的数组中。如果不进行order参数的设置,默认参数为C。
(2). “C”指的是用类C写的读/索引顺序的元素,最后一个维度变化最快,第一个维度变化最慢。 以二维数组为例,简单来讲就是横着读,横着写,优先读/写一行。
(3). “F”是指用FORTRAN类索引顺序读/写元素,最后一个维度变化最慢,第一个维度变化最快。 竖着读,竖着写,优先读/写一列。注意,“C”和“F”选项不考虑底层数组的内存布局,只引用索引的顺序。
Reshape的实操案例
1.shape查看数据有多少行多少列
import numpy as np
a = np.arange(8)
print(a)
print(a.shape) # 查看当前格式,结果为1行8列,即(8,) 相当于(1,8)
2.reshape()数据的重新组织。
import numpy as np
a = np.arange(8)
print(a)
print(a.shape) # 查看当前格式,结果是一维的1行8列,即(8,) 相当于(1,8)
print("-"*20)
b = a.reshape(1,8) # 改变格式(形状)为1行8列,行数是 a(8)能除的尽的数才行
print(b.shape) # 查看当前格式
c = a.reshape(1,-1) # 改变格式(形状),'-1代表请系统自行计算列数'
print(c.shape)
print("-"*20)
d = a.reshape(2,-1) # 2维2行4列,行数是 a(8)能除的尽的数才行
print(d.shape)
e = a.reshape(4,-1) # 2维4行2列 行数是 a(8)能除的尽的数才行
print(e.shape)
f = a.reshape(2,2,-1) # 3维
print(f.shape)
print("-"*20)
g = a.reshape(3,-1)
print(g.shape) #行数是 a(8)能除的尽的数才行,否则会报错。
报错信息:
3.reshape()中order的使用
import numpy as np # order的使用
a = np.arange(8)
b = a.reshape(2,4,order = 'C') # order = 'C' 横着读,横着写,默认为C
print(b)
print("-"*20)
b1 = a.reshape(2,4,order = 'F') # order = 'F' 竖着读,竖着写
print(b1)
二、 Numpy的Resize
Resize就是变更原有矩阵的大小
◼ resize-1:有返回值的resize,不会改变原来array的shape;
◼ resize-2:若resize后需要的数据量少,会丢弃一些数据;
◼ resize-3:若resize后需要的数据量多,会补0。
Resize的实操案例
import numpy as np
a = np.arange(9)
print(a)
b = np.resize(a,(2,4)) # 若resize后需要的数据量少,会丢弃一些数据;
print(b)
print('-'*15)
b = np.resize(a,(6,3)) # 改变形状为6行3列,尺寸不够会循环填充;
print(b)