利用Python进行数据分析| 4 NumPy基础:数组和矢量计算

ndarray:一种多维数组对象,是一个快速而灵活的大数据集容器,可以利用其对整块数据执行运算。

up-3ea92e17ebbd17e0d9cfa4b67adcd922832.png

广播(broadcasting):不同大小的数组之间的运算

基本的索引和切片:当你将⼀个标量值赋值给⼀个切⽚时(如arr[5:8]=12),该值会⾃动传播(也就说后⾯将会讲到的“⼴播”)到整个选区。跟列表最重要的区别在于,数组切⽚是原始数组的视图。这意味着数据 不会被复制 ,视图上的任何修改都会直接反映到源数组上。

二维数组的表示方法:

up-a916ce1cad5451ae3c70d189116d0777d63.png

up-d396b8c878922ddd0ddecc32db5c9114f1f.png

通过布尔型设置数组

花式索引(Fancy indexing):利用整数数组进行索引

#以特定顺序选取⾏⼦集,只需传⼊⼀个⽤于指定顺序的整数列表或ndarray即可
arr=np.empty((8,4))
for i in range(8):
    arr[i]=i
arr
arr[[4,3,0,6]]
arr[[0,1],[3,2]]
#花式索引跟切⽚不⼀样,它总是将数据复制到新数组中。

数组转置和轴对换

#数组转置
arr=np.arange(15).reshape((3,5))
print(arr)
print(arr.T)

#计算矩阵内积
arr=np.random.randn(6,3)
np.dot(arr.T,arr)

对于⾼维数组,transpose需要得到⼀个由轴编号组成的元组才能对这些轴进⾏转置:

arr = np.arange(16).reshape((2,2,4))
print(arr)

arr.transpose((1,0,2))
arr.swapaxes(0, 2)

通用函数(ufunc):快速的元素级数组函数

up-dd0ac7776226b99a800f39dd6b862e2175e.png

up-a2ead4b9cad7ac5f90fb012235e78ba8b04.png

利用数组进行数据处理

NumPy数组使你可以将许多种数据处理任务表述为简洁的数组表达式(否则需要编写循环)。⽤数组表达式代替循环的做法,通常被称为⽮量化

将条件逻辑表述为数组运算

np.where()=if condtion x else y

数学和统计方法

np.mean()

np.sum()

axis= 用于计算该轴向上的统计值,axis=1计算行的平均值,axis=0计算每列的统计值

up-74c2966df6270d541d5b6ef6825d47fd9da.png

用于布尔型数组的方法

bools.any()

bools.all()

唯一化以及其它的集合逻辑

np.unique()找出数组中的唯一值并返回已排序的结果

up-eadf42efd575cc042b2b81ff1206440841d.png

用于数组的文件输入输出(.npy文件)

np.save()

np.load()

np.savez()将多个数组保存到一个未压缩文件中

线性代数

np.dot()

@ 矩阵乘法

numpy.linalg中有⼀组标准的矩阵分解运算以及诸如求逆和⾏列式之类的东西

up-62c4f382a34055db73055858b7ee182b0f6.png

伪随机数生成

up-a3b9c02d3b1e8df0e7c6ef4e4867d9bb31b.png

参考资料: Mckinney W . 利用PYTHON进行数据分析[M]. 机械工业出版社, 2014.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值