import numpy as np
#1、使用数组进行文件输入和输出
arr = np.arange(100)
np.save('some_array', arr)
arr = np.load('some_array.npy')
print(arr)
#可以使用np.savez并将数组作为参数传递给该函数,用于在未压缩文件中保存多个数组(np.savez_compressed可以将数据存入已经压缩的文件):
np.savez('array_archive', a=arr, b=arr)
arr2 = np.load('array_archive.npz')
print(arr2['a'])
#2、线性代数
x = np.array([[1., 2., 3.], [4., 5., 6.]])
y = np.array([[6., 23.], [-1, 7], [8, 9]])
print(x)
'''
[[1. 2. 3.]
[4. 5. 6.]]
'''
# print(y)
'''
[[ 6. 23.]
[-1. 7.]
[ 8. 9.]]
'''
# print(x.dot(y)) #等同于np.dot(x, y),也和 x @ y结果一样,叫“点乘积”
'''
第一个数组决定了新数组的行数,第二个数组决定了新数组的列数!!!
[[ 28. 64.]
[ 67. 181.]]
'''
#一个二维数组和一个长度合适的一维数组之间的矩阵乘积,其结果是一个一维数组:
print(np.dot(x, np.ones(3))) #返回:[ 6. 15.],也可以用print(x @ np.ones(3))
#numpy.linalg拥有一个矩阵分解的标准函数集,以及其他常用函数,例如求逆和行列式求解
from numpy.linalg import inv, qr
X = np.random.randn(5, 5)
mat = X.T.dot(X)
'''
常用numpy.linalg函数
函数 描述
diag 将一个方阵的对角(或非对角)元素作为一维数组返回,或者将一维数组转换成一个方阵,并在非对角线上有零点
dot 矩阵点乘
trace 计算对角元素和
det 计算矩阵的行列式
eig 计算方阵的特征值和特征向量
inv 计算方阵的逆矩阵
pinv 计算矩阵的Moore-Penrose伪逆
qr 计算QR分解
svd 计算奇异值分解(SVD)
solve 求解x的线性系统Ax = b,其中A是方阵
lstsq jisuan Ax = b的最小二乘解
'''
#3、伪随机数生成
'''numpy.random模块填补了Python内奸的random模块的不足,可以高效地生成多种概率分布下的完整样本值数组。
伪随机数,是由具有确定性行为的算法根据随机数生成器中的随机数种子产生的
例如,可以使用normal来获得一个4X4的正态分布样本数组'''
samples = np.random.normal(size=(4, 4))
print(samples)
print(np.random.randint(10, size=(3, 3)))
print(help(np.random.randint(10, size=(3, 3))))
'''
numpy.random中的部分函数列表
函数 描述
seed 向随机数生成器传递随机状态种子
permutation 返回一个序列的随机排列,或者返回一个乱序的整数范围序列
shuffle 随机排列一个序列
rand 从均匀分布中抽取样本
randint 根据给定的由低到高的范围抽取随机整数
randn 从均值0方差1的正态分布中抽取样本
binomial 从二项分布中抽取样本
normal 从正态(高斯)分布中抽取样本
beta 从beta分布中抽取样本
chisquare 从卡方分布中抽取样本
gamma 从伽马分布中抽取样本
uniform 从均匀[0, 1)分布中抽取样本
'''
NumPy学习(4、线性代数和伪随机数)
最新推荐文章于 2024-06-16 22:01:55 发布