在不改变数组数据的情况下,更改数组的形状
reshape(a, newshape, order='C')
参数 | 含义 |
---|---|
a | 要改变形状的数组 |
newshape | 数组形状参数,取值为整数或整数组成的元组;这个形状所需的数据个数应与数组a中数据个数相同。当取值为整数时,转换为一维数组;取值为元组时,转换为对应形状的数组;若想转换为一维数组,除了使用数组a大小(size)的整数还可以使用值-1,这时将根据数组推断长度并转换 |
a = np.arange(8)
print('原始数组a:', a, sep='\n')
# 改变数组形状为(4,2)
a1 = np.reshape(a, (4, 2))
print('转换为(4,2)的数组a1:', a1, sep='\n')
b = np.array([[1, 2, 3], [4, 7, 8]])
print('数组b: ', b, sep='\n')
# 将b转化为一维数组
# 1.方法一:形状为原始数组size的整数
b1 = np.reshape(b, 6)
print('转换为一维数组的b1: ', b1, sep='\n')
# 2. 方法二: 形状设置为-1
b2 = np.reshape(b, -1)
print('转换为一维数组的b1: ', b2, sep='\n')
参数 | 含义 |
---|---|
a | 要改变形状的数组 |
newshape | 数组形状参数,取值为整数或整数组成的元组;这个形状所需的数据个数应与数组a中数据个数相同。当取值为整数时,转换为一维数组;取值为元组时,转换为对应形状的数组;若想转换为一维数组,除了使用数组a大小(size)的整数还可以使用值-1,这时将根据数组推断长度并转换 |
order | 读取数组a的方式。默认采用“C”方式。取值为C时,读取和写入数据先把最后轴读完然后依次向第一轴;取值为F时,先将第一轴读完/写完,然后第二轴,依次进行到最后一轴;取值为A时,表示读取和写入的方式与内存中数组a的存储方式一致;order的取值既规定了读取方式也规定了写入方式 |
import numpy as np
c = np.array([[[1, 2, 3], [4, 7, 8]], [[11, 12, 13], [14, 17, 18]]])
print('数组c:', c, sep='\n')
c1 = np.reshape(c, 12, order='C')
print('以C的方式读取转换后的数组c1:', c1, sep='\n')
c2 = np.reshape(c, 12, order='F')
print('以F的方式读取转换后的数组c2:', c2, sep='\n')
# c2 = np.reshape(c1,(2,6),order='F')
# print('输出数组c2: ',c2,sep='\n')
d = np.arange(0, 12)
print('数组d: ', d, sep='\n')
d1 = np.reshape(d, (4, 3), order='C')
print('以C的方式写入数据得到数组d1: ', d1, sep='\n')
d2 = np.reshape(d, (4, 3), order='F')
print('以C的方式写入数据得到数组d2: ', d2, sep='\n')
import numpy as np
c = np.array([[[1, 2, 3], [4, 7, 8]], [[11, 12, 13], [14, 17, 18]]])
print('数组c:', c, sep='\n')
c1 = np.reshape(c, (6, 2), order='C')
print('以C的方式读取转换后的数组c1:', c1, sep='\n')
order取值为C ,以最后一个轴axis=2优先的方向读取和写入数据
order取值为F ,以第一个轴axis=0优先的方向读取和写入数据
c2 = np.reshape(c, (6, 2), order='F')
print('以C的方式读取转换后的数组c2:', c2, sep='\n')
返回指定形状的数组
返回轴转置的数组,对于一维数组转置之后返回原数组相同的view数组;对于二维数组,就是矩阵转置,m行n列,转换为n行m列;对于三维及以上数组,需要看是否指定轴
numpy.transpose(a, axes=None)
含义 | 参数 |
---|---|
a | 要转置的数组 |
axes | 取值为None或者没有参数,新数组形状为原数组轴的顺序反转 ;取值为元组 |
import numpy as np
c = np.array([[[1, 2, 3], [4, 7, 8]], [[11, 12, 13], [14, 17, 18]]])
print('数组c(2x2x3):', c, sep='\n')
# 1. 无输入参数
c1 = c.transpose()
print('以C的方式读取转换后的数组c1(3x2x2):', c1, sep='\n')
import numpy as np
c = np.array([[[1, 2, 3, 0], [4, 7, 8, 9], [1, 1, 1, 1]],
[[11, 12, 13, 10], [14, 17, 18, 15], [2, 2, 2, 2]]])
print('数组c(2x3x4):', c, sep='\n')
# 1. 无输入参数
c1 = np.transpose(c, (1, 2, 0))
print('以C的方式读取转换后的数组c1(3x4x2):', c1, sep='\n')
转置后的数组,该数组是原数组的view。与原数组与转置后的数组是不同的对象,但是共享同一块儿内存区域,改变转置数据的值原始数组也会改变。