加减乘除
在 Numpy 中进行加减乘除可比 List 有效率多了,Numpy 可以让在 Array 中的每一个元素都快速计算,甚至有时候还可以帮你自动并行运算。 比如你要为一个列表中的每个元素都加上一个值,比如收集了一批学生的身高,一年后,大家都长高了 3cm。
#### list
l = [150, 166, 183, 170]
for i in range(len(l)):
l[i] += 3
print(l)
[153, 169, 186, 173]
##### numpy
import numpy as np
a = np.array([150, 166, 183, 170])
print(a + 3)
[153 169 186 173]
#######批量 +-*/ 全元素计算#
print("a + 3:", a + 3)
print("a - 3:", a - 3)
print("a * 3:", a * 3)
print("a / 3:", a / 3)
a + 3: [153 169 186 173]
a - 3: [147 163 180 167]
a * 3: [450 498 549 510]
a / 3: [50. 55.33333333 61. 56.66666667]
矩阵点积运算 dot()
a = np.array([
[1, 2],
[3, 4]
])
b = np.array([
[5, 6],
[7, 8]
])
print(a.dot(b))
[[19 22] [43 50]]
print(np.dot(a, b))
[[19 22] [43 50]]
从上面可以看出,你有两种写法。1)直接用一个矩阵 dot 另一个;2)用 np.dot(a, b) 把两个矩阵包起来。
数据统计分析
用 Numpy 做数据分析理所应当,但是如果数据的种类多样的话,推荐用 Pandas 来做分析的. 不过,在数据量比较大的时候,我更喜欢直接 Numpy 来搞,因为 Numpy 的速度还是要比 Pandas 快上不少。
那么什么是数据分析呢?其实也就是在数据中找到你想要的一些变量,总结数据的规律。最简单的当属找到最大值最小值了。 比如上面的身高数据,你想找全班最高和最矮的。
a = np.array([150, 166, 183, 170])
print("最大:", np.max(a))
print("最小:", a.min())
最大: 183
最小: 150
print("总共:", a.sum())
总共: 669
print("累乘:", a.prod())
print("总数:", a.size)
累乘: 774639000
总数: 4
print("平均身高:", np.mean(a))
print("身高中位数:", np.median(a))
平均身高: 167.25
身高中位数: 168.0
print("标准差:", np.std(a))
标准差: 11.776565713313877
特殊运算符号
# 天花板的值 地板的值
a = np.array([150.1, 166.4, 183.7, 170.8])
print("ceil:", np.ceil(a)) #取天花板的值
print("floor:", np.floor(a)) #还是地板的值
ceil: [151. 167. 184. 171.]
floor: [150. 166. 183. 170.]
## 上限下限
a = np.array([150.1, 166.4, 183.7, 170.8])
print("clip:", a.clip(160, 180))
clip: [160. 166.4 180. 170.8]