隨機數
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表示跳過前幾行