随机数
numpy.random包含多种概率分布的随机样本
- rand
random.rand [0,1]之间的随机浮点数 平均分布 - normal
np.random.normal(loc=0.0, scale=1.0, size=None) 正态分布随机数,loc是均值,scale是方差。 - randint
numpy.random.randint(low, high=None, size=None, dtype=‘l’)
生成一个整数或N维整数数组
若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数,且high必须大于low
#random.rand [0,1]之间的随机浮点数 平均分布
print('np.random.rand()')
print('np.random.rand()\n',np.random.rand())
print('np.random.rand(2,3)\n',np.random.rand(2,3))
print('np.random.rand(2,3)*10\n',np.random.rand(2,3)*10)#0-10之间的浮点数
#random.normal 正态分布
print('np.random.normal(size=(4,4))\n',np.random.normal(size=(4,4)))#normal 正态分布
print(np.random.normal(2,0.5,10))#loc=0,scale=0.5 指定参数的正态分布
#random.randint
# numpy.random.randint(low, high=None, size=None, dtype='l'):生成一个整数或N维整数数组
# 若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数,且high必须大于low
# dtype参数:只能是int类型
print(np.random.randint(10))#[0,10)之间的整数随机数
print(np.random.randint(1,3))#[1,3)之间的整数
print(np.random.randint(1,5,size=(2,6)))#size是生成数组的尺寸
存储和读取
存储、读取.npy可以使用save load语句
np.save(‘ar.npy’,ar)
np.load(‘ar.npy’)
存储、读取txt格式可以用savetxt loadtxt格式
- np.savetxt
np.savetxt(fname, X, fmt=’%.18e’, delimiter=’ ‘, newline=’\n’, header=’’, footer=’’, comments=’# ‘, encoding=None)
fname: ndarray
fmt:存储格式 如保留小数点位数和数据类型
delimiter:数据分隔格式,如delimiter=’ ,'是用逗号间隔 - np.loadtxt
np.loadtxt(fname, dtype=<class ‘float’>, comments=’#’, delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding=‘bytes’, max_rows=None)
读取txt文件
import os
import numpy as np
os.chdir('C:\\Users\\Violette\\Desktop')
ar=np.random.randint(1,10,size=(3,3))
print(ar)
#save : Save an array to a binary file in NumPy ``.npy`` format
#savez : Save several arrays into an uncompressed ``.npz`` archive
#savez_compressed : Save several arrays into a compressed ``.npz`` archive
np.save('ar.npy',ar)
ar1=np.load('ar.npy')
print(ar1)
ar=np.random.rand(3,3)
print(ar)
np.savetxt('ar.txt',ar,delimiter=',',fmt='%.3f')#逗号间隔,保留三位小数的浮点数
ar2=np.loadtxt('ar.txt',delimiter=',')
print(ar2)
print(np.loadtxt('ar.txt',delimiter=',',skiprows=2))#skiprows表示跳过前几行