数组的常用属性:
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
'''
用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
'''
**用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'] 数据类型