一、numpy在数据分析的应用:
- 在数据处理、清洗、构造子集、过滤、变换以及其他计算中进行快速的向量化计算
- 常见的数组算法,比如sort、unique以及set操作等
- 高效的描述性统计和聚合、概述数据
- 数据排列和相关数据操作,例如对异构数据进行merge和join
- 使用数组表达式来表明条件逻辑,代替if-elif-else条件分支的循环。
- 分组数据的操作(聚合,变换以及函数式操作)
二、numpy的优势
下面的例子将展现numpy的不同,假设一个numpy数组包含100万个整数,还有一个同样数据内容的python列表:
import numpy as np
my_arr = np.arange(100000)
my_list = list(range(100000))
现在我们同时对每个序列乘以2:
%time for i in range(10): my_arr2 = my_arr * 2
CPU times: user 1.31 ms, sys: 4.08 ms, total: 5.39 ms
Wall time: 4.95 ms
%time for i in range(10): my_list2 = [x * 2 for x in my_list]
CPU times: user 77.3 ms, sys: 8.11 ms, total: 85.4 ms
Wall time: 84.9 ms
由此可以看出,numpy的方法比python方法快10到100倍,并且使用的内存也更少
三、numpy ndarray:多维数组对象
为了让你感受下numpy如何使用类似于python内建对象的标量计算语法进行批量计算,这里举一个例子:
data = np.random.randn(2, 3)
data
array([[-0.95909317, -0.86735722, -2.12730064],
[ 1.55107167, 0.34639641, 0.98348208]])
然后给data加上一个数学操作:
data * 10
array([[ -9.59093173, -8.67357218, -21.27300638],
[ 15.51071672, 3.46396414, 9.83482081]])
data + 10
array([[ 9.04090683, 9.13264278, 7.87269936],
[ 11.55107167, 10.34639641, 10.98348208]])
data + data
array([[-1.91818635, -1.73471444, -4.25460128],
[ 3.10214334, 0.69279283, 1.96696416]])
每个数据都有一个shape属性,用来表征数组每一维度的数量;每一个数组都有一个dtype属性,用来描述数组的数据类型:
data.shape
(2, 3)
data.dtype
dtype('float64')