numpy

浪尽此生 提交于 2020-02-02 21:43:49
  • ndarray自带属性
import numpy as np
a=np.array([[0,1,2,3,4],
          [9,8,7,6,5]])
a.ndim
a.shape
a.size
a.dtype
a.itemsize
  • ndarray创建方法
#ndarray数组的创建方法
#1.从python中的列表元组创建
x=np.array([0,1,2,3])
print(x)
x=np.array((4,5,6,7))
print(x)
x=np.array([[1,2],[3,4],(5,6)])
print(x)

#2.使用numpy中的函数创建数组
#(1)
y=np.arange(6)
print(y)
y=np.ones((2,2),dtype=np.int32)
print(y)
y=np.eye(5)
print(y)
#(2)
#np.ones_like(a)
#np.zeros_like(a)
#np.full_like(a,val)
#(3)
a=np.linspace(1,10,4)
print(a)
b=np.linspace(1,10,4,endpoint=False)
print(b)
c=np.concatenate((a,b))
print(c)
  • ndarray维度变化
#ndarray数组维度变化
#.reshape(shape) 返回新数组,元素组不变
#.resizw(shape) 与reshape功能相同,但是改变原数组
#.swapaxes(ax1,ax2) 将数组n个维度中的两个维度进行调换
#.flatten() 对数组进行降维,元素组不变
#.tolist() 转置?

#ndarray数组类型变化
#new_a=a.astype(new_type)
a=np.ones((2,3),dtype=np.int)
print(a)
b=a.astype(np.float)
print(b)
print(a)
  • 切片和索引
#数组的索引和切片
#(1)一维
a=np.array([0,1,2,3,4])
#索引a[2]
#切片
print(a[0:4:2]) #起始,终止(不含),步长
#(2)多维
b=np.arange(24).reshape((2,3,4))
print(b)
#索引b[1,2,3]
#切片
print(b[:,:,::2])#一二维度不变,三维度起始到终止步长为2
  • 数组运算和统计
#数组运算
a=np.arange(24).reshape((2,3,4))
#print(a.mean())
a=a/a.mean()
print(a)
#元素级运算
#绝对值:np.abs(x)
#平方根:np.sqrt(x)
#平方:np.suqare(x)
#原数组不变

#统计
sum(a, axis=None) 根据给定轴axis计算数组a相关元素之和,axis整数或元组
mean(a, axis=None) 根据给定轴axis计算数组a相关元素的期望,axis整数或元组
average(a,axis=None,weights=None) 根据给定轴axis计算数组a相关元素的加权平均值
std(a, axis=None) 根据给定轴axis计算数组a相关元素的标准差
var(a, axis=None) 根据给定轴axis计算数组a相关元素的方差

min(a) max(a) 计算数组a中元素的最小值、最大值
argmin(a) argmax(a) 计算数组a中元素最小值、最大值的降一维后下标
unravel_index(index, shape) 根据shape将一维下标index转换成多维下标
ptp(a) 计算数组a中元素最大值与最小值的差
median(a)计算数组中元素的中位数(中值)

median(a)
  • 随机函数
#随机函数
#1.np.random
#(1)
#rand(do...dn) 生成n维随机数,{0,1)均匀分布
#randn()正态分布
#randint(low,high(shape))
#seed(s)随机种子
np.random.seed(10)
a=np.random.randint(10,20,(2,2))
print(a)
np.random.seed(10)
b=np.random.randint(10,20,(2,2))
print(b)

#(2)
#shuffle(a)根据第一维随机排列,改变a
#permutation(a)不改变a
#(3)
#uniform(low,high,shape)均匀分布 
#normal(loc,scale,shape)正态分布 loc均值 scale标准差
  • 存储和加载
#数据的存储
#1.csv文件
#(1)存储
#np.savetxt(frame,array,fmt='%.18e',delimiter=None)
#frame:输出文件 array:保存的array fmt:保存的格式  delimiter:分隔符,默认是空格
#存储在当前路径下
a=np.arange(100).reshape((10,10))
np.savetxt('test.csv',a,fmt='%d',delimiter=',')

#(2)加载
#np.loadtxt(framw,dtype=np.float,delimiter=None,unpack=False)

#注意:csv只能有效存储一维或者二维数组

#2.多维数组存储
a=np.arrange(100).reshape(5,10,2)
a.tofile("b.dat",sep=',',format='%d')
c=np.fromfile("b.dat",dtype=np.int,sep=',').reshape(5,10,2)
#注意:该方法读取数据时需要知道存入数据时的维度信息,需要配合使用

#3.numpy的便捷文件存取
np.save(fname,array)
#fname:必须是以.npy为扩展名
np.load(fname)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!