Python之Numpy数据存取与函数

一、numpy文件存取

一、数据的CSV文件存取

CSV是常用逗号作为分隔

np.savetxt(frame,array,fmt='%.18e',delimiter=None)
  • frame:文件,字符产生器, .gz or .bz2的压缩文件
  • array:存入的文件数组
  • fmt:写入文件的格式,例如%d,%.2f,%。18e
  • delimiter:分隔字符串,默认是空格

如对于数组a

np.savetxt('a.csv',a,fmt='%d',delimiter=',')

np.savetxt(frame,dtype=np.float,delimiter=None,unpack=False)
  • frame:文件,字符产生器, .gz or .bz2的压缩文件
  • dtype:数据类型,可选
  • delimiter:分隔字符串,默认是空格
  • unpack:如果是true,读入属性分别写入不同变量

e.g.

b=np.loadtxt('a,csv',dtype=np.int,delimiter=',')

局限性:上述两个代码只能存取一维和二维数组

二、多维数据的存取

a.tofile(frame,sep='',format='%s')
  • frame:文件,字符串
  • sep:数据分隔字符串,如果是空串,写入文件为二进制
  • format:写入数据的格式

e.g.

a.tofile("b.dat",sep=",",format='%d')

若sep为空,存入结果如下

81c79aee39d4467082dbdcc0f0f945f8.png

np.fromfile(frame,dtype=float,count=-1,sep='')
  • frame:文件,字符串
  • dtype:读取数据类型,可选
  • count:读入元素个数,-1代表读入整个文件
  • sep:数据分隔字符串,如果是空串,写入文件为二进制

e.g.

a=np.arrange(24).reshape(2,3,4)
a.tofile("b.dat",sep=",",format="%d")
c=np.fromfile("b.dat",dtype=np.int,sep=",").reshape(2,3,4)

注:该方法需要记住存入数据的维度和元素类型以便重新生成

三、numpu的便捷文件存取

np.save(fname,array) or np.savez(fname,array)
np.load(fname)

扩展名为.npy

 

二、numpy函数

一、numpy的随机数函数

np.random.**

rand(d0,d1,...,dn)根据d0-dn创建随机数组,浮点数,[0,1),均匀分布
randn(d0,d1,...,dn)根据d0-dn创建随机数组,标准正态分布
randint(low[,high,shape])根据shape创建随机整数数组,范围是[low,high)
seed(s)随机种子
suffle(a)根据数组a的第一轴进行随机排列
permutation(a)根据数组a的第一轴产生新的乱序数组,不改变数组
choice(a[size,replace,p])从一维数组中以概率p抽取元素,形成size形状的新数组,replace表示是否可以重用元素,默认为False
uniform(low,high,size)产生均匀均匀分布的数组
normal(loc,scale,size)产生均匀正态分布的数组,loc是均值,scale是标准型
poisson(lam,size)产生具有泊松分布的数组,lam是随机事件发生率
a=np.random.rand(2,3,4)
b=np.random.randint(100,200,(3,4))

二、numpy的统计函数

np.**

sum(a,axix=None)计算给定轴的总和
mean(a,axix=None)计算给定轴的期望
average(a,axix=None,weight=None)计算给定轴的加权平均值
std(a,axix=None)计算给定轴的标准差
var(a,axix=None)计算给定轴的方差
min(x)  max(x)计算数组元素中的最小最大值
argmin(x) argmax(x)得到x中最小最大值的索引
unravel_index(index,shape)根据shape将一维下标id转换为多维下标
ptp(x)计算数组x中最大最小值的差
median(x)计算数组x中的中位数

三、numpy梯度函数

np.gradient(f)

计算数组f中元素的梯度,当f为多维时,返回每个维度梯度

 

下面附上课程中实例代码(图像的手绘效果):

from PIL import Image
import numpy as np

a = np.asarray(Image.open('./beijing.jpg').convert('L')).astype('float')

depth = 10. 						# (0-100)
grad = np.gradient(a)				#取图像灰度的梯度值
grad_x, grad_y = grad 				#分别取横纵图像梯度值
grad_x = grad_x*depth/100.
grad_y = grad_y*depth/100.
A = np.sqrt(grad_x**2 + grad_y**2 + 1.)
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./A

vec_el = np.pi/2.2 					# 光源的俯视角度,弧度值
vec_az = np.pi/4. 					# 光源的方位角度,弧度值
dx = np.cos(vec_el)*np.cos(vec_az) 	#光源对x 轴的影响
dy = np.cos(vec_el)*np.sin(vec_az) 	#光源对y 轴的影响
dz = np.sin(vec_el) 				#光源对z 轴的影响

b = 255*(dx*uni_x + dy*uni_y + dz*uni_z) 	#光源归一化
b = b.clip(0,255)

im = Image.fromarray(b.astype('uint8')) 	#重构图像
im.save('./beijingHD.jpg')

 

 

 

知识点来自(欢迎补充和更正):

Python数据分析与展示_北京理工大学_中国大学MOOC(慕课)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值