加减乘除

在 Numpy 中进行加减乘除可比 List 有效率多了,Numpy 可以让在 Array 中的每一个元素都快速计算,甚至有时候还可以帮你自动并行运算。 比如你要为一个列表中的每个元素都加上一个值,比如收集了一批学生的身高,一年后,大家都长高了 3cm。

  1. #### list
  2. l = [150, 166, 183, 170]
  3. for i in range(len(l)):
  4. l[i] += 3
  5. print(l)
  6. [153, 169, 186, 173]
  7. ##### numpy
  8. import numpy as np
  9. a = np.array([150, 166, 183, 170])
  10. print(a + 3)
  11. [153 169 186 173]
  12. #######批量 +-*/ 全元素计算#
  13. print("a + 3:", a + 3)
  14. print("a - 3:", a - 3)
  15. print("a * 3:", a * 3)
  16. print("a / 3:", a / 3)
  17. a + 3: [153 169 186 173]
  18. a - 3: [147 163 180 167]
  19. a * 3: [450 498 549 510]
  20. a / 3: [50. 55.33333333 61. 56.66666667]

矩阵点积运算 dot()

dot.png

  1. a = np.array([
  2. [1, 2],
  3. [3, 4]
  4. ])
  5. b = np.array([
  6. [5, 6],
  7. [7, 8]
  8. ])
  9. print(a.dot(b))
  10. [[19 22] [43 50]]
  11. print(np.dot(a, b))
  12. [[19 22] [43 50]]

从上面可以看出,你有两种写法。1)直接用一个矩阵 dot 另一个;2)用 np.dot(a, b) 把两个矩阵包起来。

数据统计分析

用 Numpy 做数据分析理所应当,但是如果数据的种类多样的话,推荐用 Pandas 来做分析的. 不过,在数据量比较大的时候,我更喜欢直接 Numpy 来搞,因为 Numpy 的速度还是要比 Pandas 快上不少。
那么什么是数据分析呢?其实也就是在数据中找到你想要的一些变量,总结数据的规律。最简单的当属找到最大值最小值了。 比如上面的身高数据,你想找全班最高和最矮的。

  1. a = np.array([150, 166, 183, 170])
  2. print("最大:", np.max(a))
  3. print("最小:", a.min())
  4. 最大: 183
  5. 最小: 150
  6. print("总共:", a.sum())
  7. 总共: 669
  8. print("累乘:", a.prod())
  9. print("总数:", a.size)
  10. 累乘: 774639000
  11. 总数: 4
  12. print("平均身高:", np.mean(a))
  13. print("身高中位数:", np.median(a))
  14. 平均身高: 167.25
  15. 身高中位数: 168.0
  16. print("标准差:", np.std(a))
  17. 标准差: 11.776565713313877

特殊运算符号

  1. # 天花板的值 地板的值
  2. a = np.array([150.1, 166.4, 183.7, 170.8])
  3. print("ceil:", np.ceil(a)) #取天花板的值
  4. print("floor:", np.floor(a)) #还是地板的值
  5. ceil: [151. 167. 184. 171.]
  6. floor: [150. 166. 183. 170.]
  7. ## 上限下限
  8. a = np.array([150.1, 166.4, 183.7, 170.8])
  9. print("clip:", a.clip(160, 180))
  10. clip: [160. 166.4 180. 170.8]