python——numpy包的一些功能笔记

numpy

基本功能

#data皆为数组
data.shape 
data.dtype
np.array(data1) #list转array
data.ndim #维数
np.zeros(10)
np.zeros((3,6))
np.empty((2,3,2)) #返回未初始化的垃圾值
np.arange(15)
np.array([1,2,3],dtype=np.float64)
data.astype(np.float64)

索引功能

data[5:8] #索引
data[5:8].copy() #因为改变值会反应到原数组
data[0][2]
data[0,2] #这两个等价
data[0]=42 #所有的检索为0的都变成42
data[:,:1]
data = randn(7,4) #numpy.random中的randn函数,生成标准正态分布的随机数据
data == "bob" #返回所有布尔值数组
data1[data == "bob"] #索引true的值,布尔型数组的长度必须跟被索引的轴长度一致
data1[data == "bob", 2:]
data1[data != "bob"] 
data1[-(data == "bob")] #这两个等价
data[data<0] = 0
data1[data != "joe"] = 7

data=np.arange(32).reshape((8,4))
data[[1,5,7,2],[0,3,1,2]] #索引出4个数
data[[1,5,7,2]][:,[0,3,1,2]] #后一个框为 按顺序列出所有
data[np.ix_([1,5,7,2],[0,3,1,2])] #用`np.ix_`是选取方形区域的索引器

数组转置和轴对换

data.T #转置
np.dot(data.T,data) #矩阵内积
data.transpose((1,0,2)) #原来shape索引是[0][1][2],现在是[1][0][2]
data.swapaxes(1,2) #1和2索引对换

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

np.aqrt(data)
np.exp(data)
np.maximum(data1,data2)
data=randn(7)*5 ; np.modf(data) #返回两个数组,分别为小数和整数部分

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

#xarr,yarr都是数组,cond是布尔值
result=[(x if c else y) for x,y,z in zip(xarr,yarr,cond)] #当cond为true时,选取xarr的值,否则从yarr中选取 ,输出为list
np.where(cond,xarr,yarr) #返回数组
np.where(arr<0,2,-2)
np.where(arr<0,2,arr)

数学和统计方法

data.mean()
data.sum()
data.mean(axis=1) #求每行的均值
data.sum(0) #求纵轴的和
data.cumsum(0) #行累计求和
data.cumprod(1) #列类似相乘
(data>0).sum() #正值的数量
bools.any() #布尔数组是否存在一个或多个true
bools.all() #布尔数组是否都是true
data.sort() #排序
data.sort(1) #行内排序
data[int(0.05*len(data))] #5%分位数

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

np.unique(data) #返回唯一值的数组 并且返回已排序的结果
np.in1d(data,[2,3,6]) #返回len(data)个布尔值数组,data是否有2,3,6

数组的文件输入输出

np.save("some_array.npy",data)
np.load("some_array.npy")
np.savez("array_archive.npz",a=data1,b=data2) #用于保存多个数组
np.load("array_archive.npz"); arch["b"]

#存取文本文件
!cat array_ex.txt #查看txt
arr=np.loadtxt("array_ex.txt",delimiter=",") #导入时用逗号分隔

线性代数

x.dot(y)
np.dot(x,y) #上两行相同
qr.(data) #计算qr分解
inv(data) #计算矩阵的逆

随机数的生成

np.random.normal(size=(4,4))
%timeit #之后加脚本可以算运行时间
data.argmax() #返回最大值的索引
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值