当前位置:   article > 正文

numpy常见用法_numpy的用法

numpy的用法

目录

一、numpy数组的创建

1.1 手动创建

1.2 调用numpy函数创建

1.3 创建连续数组

二、numpy数据类型以及本身操作

2.1 numpy的数据类型及转换

2.2 numpy数组的shape即转换

三、取numpy数组中的值

3.1 切片索引

3.2 布尔索引

3.3 花式索引

四、numpy数组的计算

4.1 numpy数组本身的计算

4.2 与其他numpy数组的计算

五、numpy数据的保存与加载

参考文献


 

numpy的基本对象为ndarray,即n-dimensional array object,它是存储单一数据类型的多维数组

一、numpy数组的创建

1.1 手动创建

  1. a = np.array([[1,2,3,4],[5,6,7,8]])
  2. b = np.array(list((1,2,3,4,5,6,7,8,9)))

1.2 调用numpy函数创建

  1. # 创建23列的全一矩阵
  2. c = np.ones((2,3))
  3. # 创建23列的全0矩阵
  4. d = np.zeros((2,3))
  5. # 创建44列的单位矩阵
  6. e = np.eye(4)

                                                            

还有产生随机数的一系列方法都在np.random里面

                                   

1.3 创建连续数组

  1. # 类似于list,起始位置为1,结束位置为10,步长为2
  2. f = np.arange(1,10,2)
  3. # 起始位置为1,结束位置为10,创建20个数据,数据是等差数列
  4. g = np.linspace(1,10,20)
  5. # 起始位置为1,结束位置为10,创建20个数据,数据为等比数列、
  6. h = np.logspace(1,10,20)

                           

二、numpy数据类型以及本身操作

2.1 numpy的数据类型及转换

numpy数组创建的时候,可以通过dtype制定数据类型,numpy常见的数据类型如下:

                                                            

  1. # 创建数组的时候制定数据类型为int32
  2. a = np.eye(5,dtype=np.int32)
  3. # 查看数据类型,结果为dtype('int32')
  4. a.dtype
  5. # 转化数据类型,转化成np.float32
  6. a.astype(np.float32)

2.2 numpy数组的shape即转换

  1. # 创建大小为(4,4)的数组
  2. a = np.eye(4,dtype=np.int32)
  3. # 显示a的shape,为(4,4
  4. a.shape
  5. # 将a数组转化成(2,8)列的数组
  6. a.reshape((2,8))

输出结果为:

       

三、取numpy数组中的值

3.1 切片索引

切片索引是源数据的视图,对切片进行修改,也会影响到源数据

  1. a = np.arange(10)
  2. a_slice = a[3:9]
  3. #a_slice输出结果为array([3, 4, 5, 6, 7, 8])
  4. # 将索引的0个元素赋值为12345,则a的相应的值也会发生改变
  5. a_slice[0] = 12345
  6. # 输出a的值为
  7. array([ 0, 1, 2, 12345, 4, 5, 6, 7, 8, 9])

更为复杂的切片索引

  1. arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
  2. # arr2d为
  3. array([[1, 2, 3],
  4. [4, 5, 6],
  5. [7, 8, 9]])
  6. # 取前两行,后两列的数据
  7. arr2d[:2,1:]
  8. # 取第二列的数据
  9. arr2d[:,1]

3.2 布尔索引

通过布尔值来取相应的数据

  1. # names为7个人名,分别对应data17
  2. names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
  3. data = np.random.randn(7, 4)
  4. # data数据如下
  5. array([[ 0.41913264, -0.60298782, -0.33671674, 0.90943554],
  6. [-0.80005614, 0.0440845 , -0.39836774, 0.70296011],
  7. [-0.71155559, -1.55516028, 0.94330681, -1.16287966],
  8. [ 0.71886886, -0.44805654, 0.20305883, -1.40290861],
  9. [-0.55253099, 0.40979184, 0.38371407, 0.32289946],
  10. [ 1.84004387, 0.35889294, 0.20075337, -1.07528119],
  11. [ 0.35663761, -0.80927168, -1.57235542, -1.26338198]])
  12. # 取Bob所对应的行
  13. data[names == 'Bob']
  14. 结果:
  15. array([[ 0.41913264, -0.60298782, -0.33671674, 0.90943554],
  16. [ 0.71886886, -0.44805654, 0.20305883, -1.40290861]])

3.3 花式索引

利用整数数组来进行取值,想取那行就把那行的索引放在数组里

  1. arr = np.ones((8, 4))
  2. for i in range(8):
  3. arr[i] = i
  4. # arr数据
  5. array([[0., 0., 0., 0.],
  6. [1., 1., 1., 1.],
  7. [2., 2., 2., 2.],
  8. [3., 3., 3., 3.],
  9. [4., 4., 4., 4.],
  10. [5., 5., 5., 5.],
  11. [6., 6., 6., 6.],
  12. [7., 7., 7., 7.]])
  13. # 现在想取1,3,5,7
  14. arr[[1,3,5,7]]
  15. 结果:
  16. array([[1., 1., 1., 1.],
  17. [3., 3., 3., 3.],
  18. [5., 5., 5., 5.],
  19. [7., 7., 7., 7.]])

四、numpy数组的计算

4.1 numpy数组本身的计算

  1. # 通过numpy数组对进行一些统计计算,如:numpy数组求和,求平均等等
  2. # 生成32列的随机数组
  3. arr = np.random.randn(3,2)
  4. array([[-0.17504348, 1.07181866],
  5. [ 0.98881592, -0.18443573],
  6. [ 0.07177932, -1.13940987]])
  7. # 对arr数组求均值
  8. arr.mean()
  9. 结果:
  10. 0.10558747189372959
  11. # 对arr数组求和
  12. arr.sum()
  13. 结果:
  14. 0.6335248313623776
  15. # 对arr数组列求和
  16. arr.sum(axis=0)
  17. 结果:
  18. array([ 0.88555177, -0.25202694])
  19. # 对arr数组行求和
  20. arr.sum(axis=1)
  21. 结果:
  22. array([ 0.89677519, 0.80438019, -1.06763054])
  1. # 对numpy数组进行一些数学运算,例如求指数,求平方
  2. # 这些在numpy里叫ufunc即 universal function,对数组内每个元素进行操作的函数
  3. arr = np.random.randn(6)
  4. # 对arr求绝对值
  5. np.abs(arr)
  6. 结果:
  7. array([1.02469848, 0.84606635, 0.43296449, 0.86053481, 0.10749375, 1.49358338])
  8. # 对arr求cos
  9. np.cos(arr)
  10. 结果:
  11. array([0.51935658, 0.6629333 , 0.90772595, 0.65203207, 0.99422811, 0.07713625])

4.2 与其他numpy数组的计算

  1. # numpy与其他数组的计算,主要包括加、减、乘、除,求逆等等
  2. # 常用的操作为矩阵相乘
  3. a = np.array([[1,2],[3,4]])
  4. b = np.array([[1,1],[2,2]])
  5. a
  6. array([[1, 2],
  7. [3, 4]])
  8. b
  9. array([[1, 1],
  10. [2, 2]])
  11. # 矩阵相乘为np.dot(),py3.5以后也可以用@
  12. np.dot(a,b) 或者 a@b
  13. 结果都一样,如下:
  14. array([[ 5, 5],
  15. [11, 11]])
  16. # 矩阵对应元素与元素相乘
  17. np.multiply(a,b)
  18. 结果:
  19. array([[1, 2],
  20. [6, 8]])

五、numpy数据的保存与加载

  1. # numpy数据的保存
  2. arr = np.arange(10)
  3. np.save('test',arr)
  4. # numpy数据的加载
  5. b = np.load('test.npy')

参考文献

简书:<利用python进行数据分析-第二版>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/620075
推荐阅读
相关标签
  

闽ICP备14008679号