Numpy || reshape()、resize()、astype()函数用法指南及如何获取数组属性

1、numpy数组的属性

数组的常用属性:

ndarray.ndim	#数组的秩
ndarray.shape	#数组的维度,m×n
ndarray.size	#数组元素的总个数,即shape中的m×n
ndarray.dtype	#ndarray对象元素的类型
ndarray.itemsize	#以字节的形式返回数据中每一个元素的大小

如何获得数组的属性:

#一维int数组
a=np.array([1,2,3,4])
print('数组的秩:',a.ndim,'数组的形状:',a.shape,'数组的元素总个数:',a.size,'数组对象元素的类型:',a.dtype,'元素存储所占的字节:',a.itemsize)
#二维float数组
b=np.array([[1.1,2.2,3.3],[1.1,2.2,3.3]])
print('数组的秩:',b.ndim,'数组的形状:',b.shape,'数组的元素总个数:',b.size,'数组对象元素的类型:',b.dtype,'元素存储所占的字节:',b.itemsize)
'''
输出:
数组的秩: 1 数组的形状: (4,) 数组的元素总个数: 4 数组对象元素的类型: int32 元素存储所占的字节: 4
数组的秩: 2 数组的形状: (2, 3) 数组的元素总个数: 6 数组对象元素的类型: float64 元素存储所占的字节: 8
'''

2、调整数组维度(reshape()函数和resize()函数)

用reshape()函数改变数组维度:

a=np.array(range(10))
b=a.reshape((2,5))
print('a ',a)
print('b ',b)
'''
输出:
a  [0 1 2 3 4 5 6 7 8 9]
b  [[0 1 2 3 4]
 	[5 6 7 8 9]]
'''

c=a.reshape((2,6))
'''
输出:
ValueError: cannot reshape array of size 10 into shape (2,6)
'''

reshape()函数只能生成元素总个数相同的数组,例如size=10的数组不能转换成size=12的数组,但**resize()**可以,这就是两个函数的区别。

**用resize()函数改变数组维度:**有两种形式,np.resize()ndarray.resize() 他们的结果不同

a=np.array(range(10))
#重复原始数组填充新数组
c=np.resize(a,(2,6))
print('c ',c)
#用0填充新数组
a.resize((2,6),refcheck=False)	#必须写"refcheck=False",否则会报错
print('a ',a)
'''
输出:
c  [[0 1 2 3 4 5]
 	[6 7 8 9 0 1]]	后两位为0 1
a  [[0 1 2 3 4 5]
 	[6 7 8 9 0 0]]	后两位为0 0 
'''

3、强制转换数组的dtype(astype函数)

**用astype()函数改变数组对象元素的类型:**ndarray.astype

a=np.array([1.1,2.2,3.3])
b=a.astype(int)
c=a.astype(str)
print('a ',a,'数据类型 ',a.dtype)
print('b ',b,'数据类型 ',b.dtype)
print('c ',c,'数据类型 ',c.dtype)
'''
输出:
a  [1.1 2.2 3.3] 数据类型  float64
b  [1 2 3] 数据类型  int32
c  ['1.1' '2.2' '3.3'] 数据类型  

你可能感兴趣的:(numpy,python,数据分析)