Python-NumPy库中reshape()的用法

在NumPy中ndarray.ndim可以返回这个数组的维数,等于秩(即轴的数量)。reshape()函数可以将数组变形重构,调整数组各维数的大小。

 但是在使用reshape()时要注意数据量是否能转换成我们所需要的行列数。如16的话分成3行6列会报错。

reshape()常用的几种形式,以一下代码为例:

(1)转换成m行n列:reshape(m,n)

import numpy as np
arr = np.array([0,1,2,3,4,5,6,7])
#显示数组arr的秩
print('原秩为:',arr.ndim)
#使用reshape()改成2行4列
arr3D = arr.reshape(2,4)
print('改成2行4列为:',arr3D)
print('改成2行4列后的秩为:',arr3D.ndim)
#使用reshape()改成4行2列
print('改成4行2列为:',arr3D.reshape(4,2))
print('改成4行2列的秩为:',arr3D.ndim)

'''
输出结果为:
原秩为: 1
改成2行4列为: [[0 1 2 3]
 [4 5 6 7]]
改成2行4列后的秩为: 2
改成4行2列为: [[0 1]
 [2 3]
 [4 5]
 [6 7]]
改成4行2列的秩为: 2
'''

 (2)转换成m行1列:reshape(m,-1)

import numpy as np
arr = np.array([0,1,2,3,4,5,6,7])
#显示数组arr的秩
print('原秩为:',arr.ndim)
#使用reshape()转换成8行1列
print(arr3D.reshape(8,-1))
print('改后的秩为:',arr3)


'''
输出结果为:
[[0]
 [1]
 [2]
 [3]
 [4]
 [5]
 [6]
 [7]]
改后的秩为: 2
'''

(3)转换成1行n列:reshape(-1,n)

import numpy as np
arr = np.array([0,1,2,3,4,5,6,7])
#显示数组arr的秩
print('原秩为:',arr.ndim)
print('原数组:',arr)
#使用reshape()转换成1行8列
arr3D = arr.reshape(-1,8)
print('改后数组:',arr3D)
print('改后的秩为:',arr3D.ndim)


'''
输出结果:
原秩为: 1
原数组: [0 1 2 3 4 5 6 7]
改后数组: [[0 1 2 3 4 5 6 7]]
改后的秩为: 2
'''

reshape(-1,8)中的-1,是模糊控制,负数可以为任何数。这里是固定8列,多少行系统根据元素数量自动计算好。若出现了无法整除的情况,系统会报错。

(4)转换成2层2行2列:reshape(a,b,c),变成三维数组,因为输出的秩为3

import numpy as np
arr = np.array([0,1,2,3,4,5,6,7])
#显示数组arr的秩
print('原秩为:',arr.ndim)
print('原数组:',arr)
#使用reshape()转换成2层2行2列
arr3D = arr.reshape(2,2,2)
print('改后数组为:')
print(arr3D)
print('改后的秩为:',arr3D.ndim)


'''
原秩为: 1
原数组: [0 1 2 3 4 5 6 7]
改后数组为:
[[[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]
改后的秩为: 3
'''

未完持续补充中.....

你可能感兴趣的:(numpy,python,开发语言)