NumPy学习(4、线性代数和伪随机数)

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)分布中抽取样本
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值