python学习笔记(Data Analysis)

Python for Data Analysis

numpy基础

嗯 调整了一些顺序

1 ndarray(n维数组)

导入数据、基本运算和数组生成
import numpy as np
#矢量化 将数据转化为数组 
data=[[1,2,3],[4,5,6]]
arr=np.array(data,dtype=np.float64)
new_arr=arr.astype(np.int64)  #astype可以将字符串存储的数据转为数值
arr.ndim  
arr.shape

arr*arr
arr+arr
arr-arr  #相同大小的数组运算会传递到每个元素 不需要循环
1/arr
arr**0.5  #数组与标量运算 
arr2=np.array([[3,2,1],[6,5,4]],dtype=np.float64)
arr2<arr  #大小相同的数组比较会产生布尔值 

np.zeros(10)  #第一个参数是shape 
np.ones((3,6))
np.empty((2,3,2))

2 索引

基本索引和切片

大致同列表 任何数组的视图上的修改都会反映到原数据上

arr_slice=arr[0]
arr_slice[:]=1
arr   #arr[0]全部转为1.
new=arr[5:8].copy()  #如果从副本上修改 不修改原arr需要用copy函数
arr[0,1]  #二维数组(两层中括号)的索引方式 [行,列]  高纬度依次类推
arr[0,1:]  #切片时可分别对一个轴切片 只有冒号为选取整个轴
布尔型索引

相当于虚拟变量(0 1) 可以用来匹配ID 条件筛选 总是创建副本

names=np.array(['Bob','A','B','Bob','C','D','E'])
data2=np.random.randn(7,4)  #生成随机矩阵
names == 'Bob'   #返回True/False的一维数组 各类判断都OK
#否定 (=) 或者~(names=='A')  多个条件用&|
#and和or在布尔数组中无效
data2[names == 'Bob',2:]  #索引与切片结合 names长度应该与data2一致
花式索引

总是一维的 会复制到新数组

arr3=np.empty((8,4))
for i in range(8):
    arr3[i]=i
arr3  #eg1
arr3[[4,3,0,6]]  #以特定顺序选取子集
arr3[[-3,-5,-7]]

arr4=np.arange(32).reshape(8,4)  #reshape整理数组 eg2
arr4[[1,5,7,2],[0,3,1,2]]  #选中的是(1,0)(5,3)(7,1)(2,2)
arr4[[1,5,7,2]][:,[0,3,1,2]]  #对每选中一维重新排序
数组转置&轴对称
arr.T  #不会复制新数组
np.dot(arr.T,arr)  #计算内积
arr5=np.arange(16).reshape((2,2,4))
arr5.transpose(1,0,2)  #第一、二轴互换
arr5.swapaxes(1,2)  #接受一对轴编号 返回视图

3 通用函数

元素级运算 接受一个out可选参数

np.sqrt(arr)  #开方
np.exp(arr)  #e的x次方
np.maximum(arr,arr2)  #返回两者中最大值
np.fmax(arr,arr2)  #忽略nan
np.minimum(arr,arr2)  #最小值
np.fmin(arr,arr2)  #忽略nan
np.abstract(arr,arr2)  #arr-arr2
np.add(arr,arr2)  #相加
np.divide(arr,arr2)  #除法
np.mod(arr,arr2)  #求模
np.floor_divide(arr,arr2)  #圆整除法
np.power(arr,arr2)  #arr的arr2次方
remainder, whole_part = np.modf(data2)  #remainder:小数部分组成的数组 whole:整数
np.copysign(arr,arr2)  #将arr2的符号给arr
np.abs(arr)  #绝对值 
np.fabs(arr)  #非复数更快
np.square(arr)  #平方 
#log log10 log2 log1p
#sign 返回正负号
#ceil 大于等于该值的最小整数
#floor 小于等于该值的最大整数
#rint 四舍五入到整数 保留类型
#isnan 哪些值非数字的布尔型数组
#isfinite 哪些值有穷的布尔型数组
#isinf 哪些值无穷的布尔型数组
#cos cosh sin sinh tan tanh 普通、双曲三角函数
#arccos arccosh arcsin arcsinh arctan arctanh 反~
#logical_not(arr) 相当于-arr
#greater、greater_equal、less、less_equal、equal、not_equal 相当于比较运算符
#logical_and、logical_or、logical_xor  相当于&|^

4 用于数组的文件输入输出

arr=np.arange(10)
np.save('some_array',arr)  #保存为npy的文件
np.load('some_array.npy')  #读取数组
np.savez('array_archive.npz',a=arr,b=arr)  #多个数组保存至未压缩文件 以关键字参数传入
arch=np.load('array_archive.npz')  #加载数据 类似字典
arch['b']
np.savez_compressed('array_archive.npz',a=arr,b=arr)  #数据压缩

5 处理数据

对一组值求距离 x 2 + y 2 \sqrt{x^2+y^2} x2+y2
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值