NumPy基础:文件IO、linalg、random

用于数组的文件输入输出

NumPy能够读写磁盘上的文件数据或二进制数据

将数组以二进制格式保存到磁盘

  1. np.save和no.load是读写磁盘数组数据的两个主要函数。默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中
  2. np.savez可以将多个数组保存到一个压缩文件中,将数组以关键字参数的形式传入即可
  3. 加载.npz文件时,会得到一个类似字典的对象,该对象会对各个数组进行延迟加载
import numpy as np

arr = np.arange(10)
np.save('some_array',arr)
np.load('some_array.npy')

np.savez('double array',a = arr, b=arr)
array = np.load("double array.npz")
array['a']

存取文本文件

  1. np.loadtxt和np.genfromtxt可以将数加载到普通的NumPy数组中,可以指定各种分隔符、针对特定列的转换器函数、需要跳过的行数等
  2. np.savetxt将数组写入以某种分隔符隔开的文本文件中。面向的是结构化数组和缺失数据处理
# 从文本文件中加载数组,并指定用逗号分隔开

arr = np.loadtxt('array_ex.txt',delimiter=',')

线性代数

  1. dot函数可用于矩阵乘法,可作为numpy方法调用也可作为实例方法调用
  2. numpy.linalg中有一组标准的矩阵分解运算,及如求逆和行列式之类的函数

常用的numpy.linalg函数

# 以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0)
arr1 = np.diag(array2)

# 矩阵乘法
arr2 = np.dot(array1,array2)

# 计算对角线元素的和
arr3 = np.trace(array2)

# 计算矩阵行列式
arr4 = np.linalg.det(array3)

# 计算方阵的本征值和本征向量
arr5 = np.linalg.eig()

# 计算方阵的逆
arr6 = np.linalg.inv()

# 计算矩阵的Moore——Penrose伪逆
arr7 = np.linalg.pinv()

# 计算QR分解
arr8 = np.linalg.qr()

# 计算奇异值分解(SVD)
arr9 = np.linalg.svd()

# 解线性方程组Ax=b,其中A为一个方阵
arr10 = np.linalg.solve()

# 计算Ax=b的最小二乘解
arr11 = np.linalg.lstsq()

随机数生成

  1. numpy.random模块对Python内置的random进行了补充,增加了一些用于高效生成多种概率分布的样本值的函数
  2. 如果需要产生大量样本值,numpy.random很快

部分numpy.random函数

# 确定随机数生成器的种子seed( ) 
# seed( ) 用于指定随机数生成时所用算法开始的整数值。
# 1.如果使用相同的seed( )值,则每次生成的随即数都相同;
# 2.如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。
np.random.seed(2)

# 返回一个序列的随机排列,或返回一个随机排列的范围
arr1 = np.random.permutation(array)
arr1

# 对一个序列本身进行随机排列
np.random.shuffle(array)
array

# 产生x个均匀分布的样本值,传入参数代表生成个数(可用seed设置算法开始的整数值)
sample1 = np.random.rand(2)

# 从给定上下限范围内随机地选取整数(第一二个参数表示上下限,第三个参数表示个数)
sample2 = np.random.randint(2,8,6)

# 产生标准正态分布的样本值
sample3 = np.random.randn(8)

# 产生二项分布的样本值  numpy.random.binomial(n,p,size=None)
# n:int型或者一个int型的数组,大于等于0,接受浮点数但是会被变成整数来使用。
# p:float或者一组float的数组,大于等于0且小于等于1.
# size:可选项,int或者int的元祖,表示的输出的大小,如果提供了size,例如(m,n,k),那么会返回m*n*k个样本。
# 如果size=None,也就是默认没有的情况,当n和p都是一个数字的时候只会返回一个值,否则返回的是np.broadcast(n,p).size个样本.
sample4 = np.random.binomial(8,0.4,6)

# 产生正态分布(高斯分布)的样本值  numpy.random.normal(loc,scale,size=shape) ,意义如下: 
# 参数loc(float):正态分布的均值,对应着这个分布的中心。
# 参数scale(float):正态分布的标准差,对应分布的宽度,scale越大,正态分布的曲线越矮胖,scale越小,曲线越高瘦。
# 参数size(int 或者整数元组):输出的值赋在shape里,默认为None。
sample5 = np.random.normal(2,1,(2,2))

# 产生Beta分布的样本值  numpy.random.beta(a, b, size=None)
sample6 = np.random.beta(3,1,(2,2))

# 产生卡方分布的样本值  numpy.random.chisquare(df,size)
sample7 = np.random.chisquare(5,(2,3))

# 产生Gamma分布的样本值 numpy.random.gamma(shape, scale=1.0, size=None)
sample8 = np.random.gamma(2,2,10)
 
# 产生在[0,1)中均匀分布的样本值   np.random.uniform(low=0.0, high=1.0, size=None)
sample9 = np.random.uniform(2, 5, 3)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值