ndarray类的属性
#ndarray.shape#维度,数组的尺寸。这是一个整数元组,指示每个维度中的数组的大小。对于具有n行和m列的矩阵(n,m)#ndarray.dtype#描述数组汇总的元素类型的对象#ndarray.size#数组元素的总数。等于shape的乘积。#ndarray.ndim#数组的轴数(尺寸)。len(shape)(长度)#ndarray.itemsize#数组中每个元素的大小(以字节为单位)#ndarray.nbytes 总字节数 size*itemsize#ndarray.real 复数数组的实部数组#ndarray.imag 复数数组的虚部数组#ndarray.T 数组对象的转置试图#ndarray.flat 扁平迭代器
import numpy as np
#niarray.ndim 数组的轴数(尺寸)a = np.array([[1,2,3],[4,5,6]])print(a)print(np.sum(a,axis=0))#将所有列的不同行进行求和print(np.sum(a,axis=1))#将所有行的不同列进行求和np.sum(a)print(a.ndim)#这是个二维数组 两个轴
[[1 2 3] [4 5 6]][5 7 9][ 6 15]2
array01 = np.array([[[1,2],[3,4]],[[5,6],[7,8]]])print(array01)#这是一个三维数组 print(array01.ndim)#轴数就是3
[[[1 2] [3 4]] [[5 6] [7 8]]]3
#ndarray.shape 数组的维度。ary02 = np.array([1,2,3,4,5])print(type(ary02),ary02,ary02.shape,ary02.dtype) #一维数组的shape(5,)ary03 = np.array([[1,2,3],[4,5,6]])print(type(ary03),ary03,ary03.shape,ary03.dtype) #二维数组的shape(2,3)两行三列
<class 'numpy.ndarray'> [1 2 3 4 5] (5,) int32<class 'numpy.ndarray'> [[1 2 3] [4 5 6]] (2, 3) int32
#ndarray.size 数组元素的个数。等于shape的乘积ary04 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])print(ary04.shape,ary04.size,len(ary04))#观察shape size len 的区别
(3, 4) 12 3
#ndarray.dtype#描述数组中元素类型的对象。ary05 = np.array([1,2,3,4,5,6])print(type(ary05),ary05,ary05.dtype)#转换ary元素的类型 浮点型ary06 = ary05.astype(float)print(type(ary06),ary06,ary06.dtype)#转换ary05元素的类型 字符串ary07 = ary05.astype(str)print(type(ary07),ary07,ary07.dtype)
<class 'numpy.ndarray'> [1 2 3 4 5 6] int32<class 'numpy.ndarray'> [1. 2. 3. 4. 5. 6.] float64<class 'numpy.ndarray'> ['1' '2' '3' '4' '5' '6'] <U11
#ndarray.itemsize 数组中每个元素的大小(以字节为单位)ary08 = np.arange(15).reshape(3,5)print(ary08)print(ary08.itemsize) #每个元素4字节
[[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]]4
#自定义复合类型data = [ ('zs',[90,80,85],15), ('ls',[92,81,83],16), ('ww',[95,85,95],16)]#第一种设置dtype的方式a = np.array(data,dtype='U3,3int32,int32') #字符串 对应位置print(a)print(a[0]['f0'], ":", a[0]['f1'])print("=====================================")#第二种设置dtype的方法b = np.array(data,dtype=[('name','str_',2), ('scores','int32',3), ('age','int32',1)]) #列表里面套元组 定义print(b)print(b[0]['name'],":",b[0]['scores'])print("=====================================")#第三种设置dtype的方式c = np.array(data,dtype={'names': ['name','scores','age'], 'formats': ['U3','3int32','int32']}) #字典里面套列表 固定格式 names formatsprint(c)print(c[0]['name'],":",c[0]['scores'],":",c.itemsize)#第四重设置dtype的方式d = np.array(data,dtype={'names':('U3',0), # 0 16 28 占内存长度 'scores':('3int32',16), 'age':('int32',28)})print(d[0]['names'], d[0]['scores'], d.itemsize)print("=====================================")#测试日期类型数组f = np.array(['2011', '2012-01-01', '2013-01-01 01:01:01','2011-02-01']) print(f)f = f.astype('M8[D]')print(f)f = f.astype('i4')print(f)print(f[3]-f[0])f.astype('bool')
[('zs', [90, 80, 85], 15) ('ls', [92, 81, 83], 16) ('ww', [95, 85, 95], 16)]zs : [90 80 85]=====================================[('zs', [90, 80, 85], 15) ('ls', [92, 81, 83], 16) ('ww', [95, 85, 95], 16)]zs : [90 80 85]=====================================[('zs', [90, 80, 85], 15) ('ls', [92, 81, 83], 16) ('ww', [95, 85, 95], 16)]zs : [90 80 85] : 28zs [90 80 85] 32=====================================['2011' '2012-01-01' '2013-01-01 01:01:01' '2011-02-01']['2011-01-01' '2012-01-01' '2013-01-01' '2011-02-01'][14975 15340 15706 15006]31array([ True, True, True, True])