ndarray类的属性

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