numpy.random.randint
Return random integers from?low?(inclusive) to?high?(exclusive).
Return random integers from the “discrete uniform” distribution of the specified dtype in the “half-open” interval [low,?high). If?high?is None (the default), then results are from [0,?low).
numpy.ndarray.astype? #Copy of the array, cast to a specified type.
np.ravel()? #Return a contiguous flattened array.?A 1-D array, containing the elements of the input, is returned. A copy is made only if needed.
numpy的ravel() 和 flatten()函數(shù)
首先聲明兩者所要實(shí)現(xiàn)的功能是一致的(將多維數(shù)組降位一維)蒲列。這點(diǎn)從兩個(gè)單詞的意也可以看出來陨溅,ravel(散開道批,解開)赔硫,flatten(變平)英岭。兩者的區(qū)別在于返回拷貝(copy)還是返回視圖(view)飒炎,numpy.flatten()返回一份拷貝厂榛,對(duì)拷貝所做的修改不會(huì)影響(reflects)原始矩陣慢叨,而numpy.ravel()返回的是視圖(view纽匙,也頗有幾分C/C++引用reference的意味),會(huì)影響(reflects)原始矩陣拍谐。
numpy模塊之a(chǎn)xis?https://blog.csdn.net/fangjian1204/article/details/53055219
numpy是針對(duì)矩陣或者多維數(shù)組進(jìn)行運(yùn)算的烛缔,而在多維數(shù)組中馏段,對(duì)數(shù)據(jù)的操作有太多的可能
通過不同的axis,numpy會(huì)沿著不同的方向進(jìn)行操作:如果不設(shè)置践瓷,那么對(duì)所有的元素操作院喜;如果axis=0,則沿著縱軸進(jìn)行操作晕翠;axis=1喷舀,則沿著橫軸進(jìn)行操作。但這只是簡單的二位數(shù)組淋肾,如果是多維的呢硫麻?可以總結(jié)為一句話:設(shè)axis=i,則numpy沿著第i個(gè)下標(biāo)變化的方向進(jìn)行操作樊卓。
numpy array aixs的理解?http://www.knowsky.com/1042890.html
>>> import numpy as np?
>>> a = np.array([[1,2],[10,20]])?
>>> a?
array([[1, 2], [10, 20]])
試試看當(dāng)axis=0的時(shí)候平均值的輸出:
>>> a.mean(axis=0)?
array([ 5.5, 11. ])
當(dāng)aixs=1的時(shí)候平均值的輸出:
>>> a.mean(axis=1)?
array([ 1.5, 15. ])
看似規(guī)律就是axis=0時(shí)是按照列來求平均而當(dāng)axis=1時(shí)是按照行來求平均值的拿愧。 但是這種方法很難應(yīng)用到高維的array中去:
>>> b = np.array([[[1,2,3],[4,5,6],[7,8,9]]])?
>>> b? ? #array([[[1, 2, 3], [4, 5, 6], [7, 8, 9]]])?
>>> b.shape (1, 3, 3)?
>>> b.mean(axis=0)? ? ?#array([[ 1., 2., 3.], [ 4., 5., 6.], [ 7., 8., 9.]])?
>>> b.mean(axis=1)? ? ?#array([[ 4., 5., 6.]])
可以看出當(dāng)數(shù)組的形狀為(1,3碌尔,3)?axis=1時(shí)并不是按照行來求平均值的浇辜, 而且axis=0時(shí)的結(jié)果就是形狀為(3,3)?數(shù)值就是它本身的數(shù)組唾戚。 以上我們就可以總結(jié)出:
axis的數(shù)值是和數(shù)組的形狀有關(guān)的柳洋。 如果axis=0, 則就按照最外面的那層array計(jì)算平均值叹坦; 如果axis=1熊镣, 則就按倒數(shù)第二層的array計(jì)算平均值, 以此類推立由。 那么我們就可以推導(dǎo):既然上面的b數(shù)組是三維的形狀(1轧钓,3,3)?那么就有axis=2锐膜,而且結(jié)果就是最里面那3行每行的平均值:
?>>> b.mean(axis=2)? ? #array([[ 2., 5., 8.]])
但是由于b只有三維(python從0開始index形狀)毕箍, 當(dāng)我們用axis=3時(shí),就會(huì)有錯(cuò)誤:
IndexError: tuple index out of range
numpy.r_用法
Translates slice objects to concatenation along the first axis.
This is a simple way to build up arrays quickly. There are two use cases.
If the index expression contains comma separated arrays, then stack them along their first axis.
If the index expression contains slice notation or scalars then create a 1-D array with a range indicated by the slice notation.
numpy.c_用法
Translates slice objects to concatenation along the second axis.
Python Numpy模塊函數(shù)np.c_和np.r_學(xué)習(xí)使用?
https://blog.csdn.net/together_cz/article/details/79548217
np.r_是按列連接兩個(gè)矩陣道盏,就是把兩矩陣上下相加而柑,要求列數(shù)相等,類似于pandas中的concat()
np.c_是按行連接兩個(gè)矩陣荷逞,就是把兩矩陣左右相加媒咳,要求行數(shù)相等,類似于pandas中的merge()
1.如何將array保存到txt文件中种远?2.如何將存到txt文件中的數(shù)據(jù)讀出為ndarray類型涩澡?
1:numpy.savetxt(fname,X):第一個(gè)參數(shù)為文件名,第二個(gè)參數(shù)為需要存的數(shù)組(一維或者二維)坠敷。
2.numpy.loadtxt(fname):將數(shù)據(jù)讀出為array類型妙同。
若想將多個(gè)數(shù)組保存到一個(gè)文件中射富,可用方法numpy.savez()
原文:Python將數(shù)組(矩陣)存成csv文件,將csv文件讀取為數(shù)組或矩陣
Python處理csv文件時(shí)經(jīng)常會(huì)用到講csv文件整體讀取為一個(gè)數(shù)組或者矩陣的情況粥帚,借助numpy包胰耗,可以使用如下代碼簡潔高效低實(shí)現(xiàn):
import numpy as np
my_matrix = np.loadtxt(open("c:\\1.csv","rb"),delimiter=",",skiprows=0)
將數(shù)組或者矩陣存儲(chǔ)為csv文件可以使用如下代碼實(shí)現(xiàn):
np.savetxt('new.csv', my_matrix, delimiter =',')
Python 基礎(chǔ)——range() 與 np.arange()
https://blog.csdn.net/lanchunhui/article/details/49493633
range()返回的是range object,而np.nrange()返回的是numpy.ndarray()?
range僅可用于迭代芒涡,而np.nrange作用遠(yuǎn)不止于此柴灯,它是一個(gè)序列,可被當(dāng)做向量使用费尽。
range()不支持步長為小數(shù)赠群,np.arange()支持步長為小數(shù)
兩者都有三個(gè)參數(shù),以第一個(gè)參數(shù)為起點(diǎn)旱幼,第三個(gè)參數(shù)為步長乎串,截止到第二個(gè)參數(shù)之前的不包括第二個(gè)參數(shù)的數(shù)據(jù)序列?
某種意義上,和STL中由迭代器組成的區(qū)間是一樣的速警,即左閉右開的區(qū)間。[first, last)或者不加嚴(yán)謹(jǐn)?shù)貙懽鱗first:step:last)
numpy.reshape用法
newshape?: int or tuple of ints
The new shape should be compatible with the original shape. If an integer, then the result will be a 1-D array of that length. One shape dimension can be -1. In this case, the value is inferred from the length of the array and remaining dimensions.
Python Numpy中reshape函數(shù)參數(shù)-1的含義
https://blog.csdn.net/weixin_39449570/article/details/78619196
新數(shù)組的shape屬性應(yīng)該要與原來數(shù)組的一致鸯两,即新數(shù)組元素?cái)?shù)量與原數(shù)組元素?cái)?shù)量要相等闷旧。一個(gè)參數(shù)為-1時(shí),那么reshape函數(shù)會(huì)根據(jù)另一個(gè)參數(shù)的維度計(jì)算出數(shù)組的另外一個(gè)shape屬性值钧唐。例如:
>>> z = np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]])
>>> print(z.reshape(2,-1))
[[1? 2? ?3? ?4? ?5? ?6? ?7? ?8]
[ 9 10 11 12 13 14 15 16]]
inplace:bool,default False
if True,do operation inplace and return None
numpy.where(condition[,?x,?y])
Return elements, either from?x?or?y, depending on?condition.
If only?condition?is given, return?condition.nonzero().
np.where 函數(shù)是三元表達(dá)式 x if condition else y的矢量化版本忙灼,當(dāng)符合條件時(shí)是x,不符合是y钝侠,常用于根據(jù)一個(gè)數(shù)組產(chǎn)生另一個(gè)新的數(shù)組该园。假設(shè)有一個(gè)隨機(jī)數(shù)生成的矩陣,希望將所有正值替換為2帅韧,負(fù)值替換為-2
arr = np.random.randn(4,4)
arr
np.where(arr>0,2,-2)
numpy.random.permutation
Parameters: x?:?int or array_like ????If?x?is an integer, randomly permute?np.arange(x). If?x?is an array, make a copy and shuffle the elements randomly.
Returns:?out?:?ndarray????Permuted sequence or array range.
Randomly permute a sequence, or return a permuted range.
If?x?is a multi-dimensional array, it is only shuffled along its first index.
>>> np.random.permutation(10)
array([1, 7, 4, 3, 0, 9, 2, 5, 8, 6])
>>> np.random.permutation([1,4,9,12,15])
array([15,? 1,? 9,? 4, 12])
shuffle與permutation的區(qū)別
函數(shù)shuffle與permutation都是對(duì)原來的數(shù)組進(jìn)行重新洗牌(即隨機(jī)打亂原來的元素順序)里初;區(qū)別在于shuffle直接在原來的數(shù)組上進(jìn)行操作,改變?cè)瓉頂?shù)組的順序忽舟,無返回值双妨。而permutation不直接在原來的數(shù)組上進(jìn)行操作,而是返回一個(gè)新的打亂順序的數(shù)組叮阅,并不改變?cè)瓉淼臄?shù)組刁品。
seed() 方法改變隨機(jī)數(shù)生成器的種子
以下是seed() 方法的語法:
import random
random.seed ( [x] )
Python生成隨機(jī)數(shù)
給定范圍內(nèi)整數(shù):
np.random.randint(0,10)? ? Return random integers from low (inclusive) to high (exclusive)
生成一個(gè)0到1的隨機(jī)浮點(diǎn)數(shù):0<=n<1.0
random.random #random模塊
生成指定范圍內(nèi)隨機(jī)實(shí)數(shù)
np.random.uniform(9,10)
隨機(jī)選一個(gè)數(shù):
np.random.randrange(9,100,10)
np.random.choice([5,6,7,8,9])
從一個(gè)字符串里面,隨機(jī)選取一個(gè)字符:
np.random.choice("從一個(gè)字符串里面浩姥,隨機(jī)選取一個(gè)字符挑随!")
numpy.random.randn? #Return a sample (or samples) from the “standard normal” distribution.從標(biāo)準(zhǔn)正態(tài)分布中返回一個(gè)或多個(gè)樣本值
zip( ) 函數(shù) 用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組勒叠,然后返回由這些元組組成的列表兜挨。
如果各個(gè)迭代器的元素個(gè)數(shù)不一致膏孟,則返回列表長度與最短的對(duì)象相同,利用 * 號(hào)操作符暑劝,可以將元組解壓為列表骆莹。
zip 語法:
zip([iterable, ...])
參數(shù)說明:
iterabl -- 一個(gè)或多個(gè)迭代器
以下實(shí)例展示了 zip 的使用方法:
>>>a =[1,2,3]
>>> b =[4,5,6]
>>> c =[4,5,6,7,8]
>>> zipped =zip(a,b) # 打包為元組的列表 [(1, 4), (2, 5), (3, 6)]
>>> zip(a,c) # 元素個(gè)數(shù)與最短的列表一致 [(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) # 與 zip 相反,可理解為解壓担猛,返回二維矩陣式 [(1, 2, 3), (4, 5, 6)]
numpy.linspace()函數(shù)
numpy.linspace(start, stop, num=50, endpoint=True,retstep=False, dtype=None)
該函數(shù)返回一組具有相同間隔的數(shù)據(jù)/采樣值幕垦,數(shù)據(jù)的間隔通過計(jì)算獲得
參數(shù):
- tart:序列的起始值
- stop:序列的終止值,除非endpoint被設(shè)置為False傅联。當(dāng)endpoint為True時(shí)先改,數(shù)據(jù)的間隔:(stop-start)/num。當(dāng)endpoint為False時(shí)蒸走,數(shù)據(jù)的間隔:(stop-start)/(num+1)仇奶。
- num:采樣的數(shù)目,默認(rèn)值為50
- endpoint:為真則stop為最后一個(gè)采樣值比驻,默認(rèn)為真该溯。
- retstep:為真則返回(samples,step),step為不同采樣值的間距
- dtype:輸出序列的類型别惦。
返回:
- samples:n維的數(shù)組
- step:采樣值的間距
例子:
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
在指定的間隔內(nèi)返回均勻間隔的數(shù)字狈茉。
返回num均勻分布的樣本,在[start, stop]掸掸。這個(gè)區(qū)間的端點(diǎn)可以任意的被排除在外氯庆。
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
Return evenly spaced numbers over a specified interval.
Returnsnumevenly spaced samples,calculated over the interval [start,stop].
The endpoint of the interval can optionally be excluded.
# 線性代數(shù)
# numpy.linalg
模塊包含線性代數(shù)的函數(shù)。使用這個(gè)模塊扰付,可以計(jì)算逆矩陣堤撵、求特征值、解線性方程組以及求解行列式等羽莺。
import numpy as np
# 1. 計(jì)算逆矩陣
#創(chuàng)建矩陣
A = np.mat("0 1 2;1 0 3;4 -3 8")
print (A)
#[[ 0 1 2]
# [ 1 0 3]
# [ 4 -3 8]]
# 使用inv函數(shù)計(jì)算逆矩陣
inv = np.linalg.inv(A)
print (inv)
#[[-4.5 7. -1.5]
# [-2. 4. -1. ]
# [ 1.5 -2. 0.5]]
# 檢查原矩陣和求得的逆矩陣相乘的結(jié)果為單位矩陣
print (A * inv)
#[[ 1. 0. 0.]
# [ 0. 1. 0.]
# [ 0. 0. 1.]]
# 注:矩陣必須是方陣且可逆实昨,否則會(huì)拋出LinAlgError異常。
# 2.求解線性方程組
# numpy.linalg
中的函數(shù)solve可以求解形如 Ax = b 的線性方程組盐固,其中 A 為矩陣屠橄,b 為一維或二維的數(shù)組,x 是未知變量
import numpy as np
#創(chuàng)建矩陣和數(shù)組
B = np.mat("1 -2 1;0 2 -8;-4 5 9")
b = np.array([0,8,-9])
# 調(diào)用solve函數(shù)求解線性方程
x = np.linalg.solve(B,b)
print (x)
#[ 29. 16. 3.]
# 使用dot函數(shù)檢查求得的解是否正確
print (np.dot(B , x))
# [[ 0. 8. -9.]]
# 3.特征值和特征向量
# 特征值(eigenvalue)即方程 Ax = ax 的根闰挡,是一個(gè)標(biāo)量锐墙。其中,A 是一個(gè)二維矩陣长酗,x 是一個(gè)一維向量溪北。特征向量(eigenvector)是關(guān)于特征值的向量
# numpy.linalg
模塊中,eigvals函數(shù)可以計(jì)算矩陣的特征值,而eig函數(shù)可以返回一個(gè)包含特征值和對(duì)應(yīng)的特征向量的元組
import numpy as np
# 創(chuàng)建一個(gè)矩陣
C = np.mat("3 -2;1 0")
# 調(diào)用eigvals函數(shù)求解特征值
c0 = np.linalg.eigvals(C)
print (c0)
# [ 2. 1.]
# 使用eig函數(shù)求解特征值和特征向量 (該函數(shù)將返回一個(gè)元組之拨,按列排放著特征值和對(duì)應(yīng)的特征向量茉继,其中第一列為特征值,第二列為特征向量)
c1,c2 = np.linalg.eig(C)
print (c1)
# [ 2. 1.]
print (c2)
#[[ 0.89442719 0.70710678]
# [ 0.4472136 0.70710678]]
# 使用dot函數(shù)驗(yàn)證求得的解是否正確
for i in range(len(c1)):
print ("left:",np.dot(C,c2[:,i]))
print ("right:",c1[i] * c2[:,i])
#left: [[ 1.78885438]
# [ 0.89442719]]
#right: [[ 1.78885438]
# [ 0.89442719]]
#left: [[ 0.70710678]
# [ 0.70710678]]
#right: [[ 0.70710678]
# [ 0.70710678]]
# 4.奇異值分解
# SVD(Singular Value Decomposition蚀乔,奇異值分解)是一種因子分解運(yùn)算烁竭,將一個(gè)矩陣分解為3個(gè)矩陣的乘積
# numpy.linalg 模塊中的svd函數(shù)可以對(duì)矩陣進(jìn)行奇異值分解。該函數(shù)返回3個(gè)矩陣——U吉挣、Sigma和V派撕,其中U和V是正交矩陣,Sigma包含輸入矩陣的奇異值睬魂。
import numpy as np
# 分解矩陣
D = np.mat("4 11 14;8 7 -2")
# 使用svd函數(shù)分解矩陣
U,Sigma,V = np.linalg.svd(D,full_matrices=False)
print ("U:",U)
#U: [[-0.9486833 -0.31622777]
# [-0.31622777 0.9486833 ]]
print ("Sigma:",Sigma)
#Sigma: [ 18.97366596 9.48683298]
print ("V",V)
#V [[-0.33333333 -0.66666667 -0.66666667]
# [ 0.66666667 0.33333333 -0.66666667]]
# 結(jié)果包含等式中左右兩端的兩個(gè)正交矩陣U和V终吼,以及中間的奇異值矩陣Sigma
# 使用diag函數(shù)生成完整的奇異值矩陣。將分解出的3個(gè)矩陣相乘
print (U * np.diag(Sigma) * V)
#[[ 4. 11. 14.]
# [ 8. 7. -2.]]
# 5. 廣義逆矩陣
# 使用numpy.linalg模塊中的pinv函數(shù)進(jìn)行求解,
# 注:inv函數(shù)只接受方陣作為輸入矩陣氯哮,而pinv函數(shù)則沒有這個(gè)限制
import numpy as np
# 創(chuàng)建一個(gè)矩陣
E = np.mat("4 11 14;8 7 -2")
# 使用pinv函數(shù)計(jì)算廣義逆矩陣
pseudoinv = np.linalg.pinv(E)
print (pseudoinv)
#[[-0.00555556 0.07222222]
# [ 0.02222222 0.04444444]
# [ 0.05555556 -0.05555556]]
# 將原矩陣和得到的廣義逆矩陣相乘
print (E * pseudoinv)
#[[ 1.00000000e+00 -5.55111512e-16]
# [ 0.00000000e+00 1.00000000e+00]]
# 6. 行列式
# numpy.linalg
模塊中的det函數(shù)可以計(jì)算矩陣的行列式
import numpy as np
# 計(jì)算矩陣的行列式
F = np.mat("3 4;5 6")
# 使用det函數(shù)計(jì)算行列式
print (np.linalg.det(F))
# -2.0
python里x=randn mat=x.T.dot 是求什么
x=randn這個(gè)寫法是不對(duì)的际跪。
randn是numpy里的一個(gè)生成隨機(jī)array的函數(shù)。
比如說要生成一個(gè)三行兩列的隨機(jī)array喉钢,可以這樣寫:
import numpy
x= numpy.random.randn(3,2)
像這樣:
后面這個(gè)mat=x.T.dot(...)是先求這個(gè)3*3矩陣的轉(zhuǎn)置(.T)姆打,再求與點(diǎn)積(.dot)
點(diǎn)積就是矩陣各個(gè)對(duì)應(yīng)元素相乘, 這個(gè)時(shí)候要求兩個(gè)矩陣必須同樣大小。
其實(shí)可以分步來的肠虽,就知道做了什么運(yùn)算了穴肘。
像這樣:
dot(2)是點(diǎn)乘常數(shù)就不說了,
那個(gè)x.T.dot([1,2,3])就是x.T的
1*1+2*2+3*3=14
2*1+3*2+4*3=20
懂了木有 =舔痕。=
ndimage.convolve() 卷積
scipy模塊的ndimage是一個(gè)處理多維圖像的函數(shù)庫,其中包括圖像濾波器豹缀、傅里葉變換伯复、圖像的旋轉(zhuǎn)拉伸以及測(cè)量和形態(tài)學(xué)處理等。
Python bytearray() 函數(shù)
描述
bytearray() 方法返回一個(gè)新字節(jié)數(shù)組邢笙。這個(gè)數(shù)組里的元素是可變的啸如,并且每個(gè)元素的值范圍: 0 <= x < 256。
語法
bytearray()方法語法:
參數(shù)
- 如果 source 為整數(shù)氮惯,則返回一個(gè)長度為 source 的初始化數(shù)組叮雳;
- 如果 source 為字符串,則按照指定的 encoding 將字符串轉(zhuǎn)換為字節(jié)序列妇汗;
- 如果 source 為可迭代類型帘不,則元素必須為[0 ,255] 中的整數(shù);
- 如果 source 為與 buffer 接口一致的對(duì)象杨箭,則此對(duì)象也可以被用于初始化 bytearray寞焙。
- 如果沒有輸入任何參數(shù),默認(rèn)就是初始化數(shù)組為0個(gè)元素。
返回值
返回新字節(jié)數(shù)組捣郊。
實(shí)例
以下實(shí)例展示了 bytearray() 的使用方法:
>>>bytearray() bytearray(b'') >>> bytearray([1,2,3]) bytearray(b'\x01\x02\x03') >>> bytearray('runoob', 'utf-8') bytearray(b'runoob') >>>
\x對(duì)應(yīng)的是UTF-8編碼的數(shù)據(jù)辽狈,通過轉(zhuǎn)化規(guī)則可以轉(zhuǎn)換為Unicode編碼,就能得到對(duì)應(yīng)的漢字呛牲,轉(zhuǎn)換規(guī)則很簡單刮萌,先將\x去掉,轉(zhuǎn)換為數(shù)字娘扩,然后進(jìn)行對(duì)應(yīng)的位移操作即可着茸,需要注意的是先要判斷utf-8的位數(shù)
cv2.waitKey(0):
The function waitKey waits for a key event infinitely (when delay≤0 ) or for delay
milliseconds, when it is positive. Since the OS has a minimum time between
switching threads, the function will not wait exactly delay ms, it will wait at
least delay ms, depending on what else is running on your computer at that
time. It returns the code of the pressed key or -1 if no key was pressed before
the specified time had elapsed.
numpy.random.uniform介紹:
1.函數(shù)原型:? numpy.random.uniform(low,high,size)功能:從一個(gè)均勻分布[low,high)中隨機(jī)采樣,注意定義域是左閉右開畜侦,即包含low元扔,不包含high.參數(shù)介紹:
? ? low: 采樣下界,float類型旋膳,默認(rèn)值為0澎语;
? ? high: 采樣上界,float類型验懊,默認(rèn)值為1擅羞;
? ? size: 輸出樣本數(shù)目,為int或元組(tuple)類型义图,例如减俏,size=(m,n,k), 則輸出m*n*k個(gè)樣本,缺省時(shí)輸出1個(gè)值碱工。返回值:ndarray類型娃承,其形狀和參數(shù)size中描述一致。
eval()是程序語言中的函數(shù)怕篷,功能是獲取返回值历筝,不同語言大同小異,函數(shù)原型是返回值 = eval( codeString )廊谓,如果eval函數(shù)在執(zhí)行時(shí)遇到錯(cuò)誤梳猪,則拋出異常給調(diào)用者。
Python List list()方法
描述
list() 方法用于將元組轉(zhuǎn)換為列表蒸痹。
注:元組與列表是非常類似的春弥,區(qū)別在于元組的元素值不能修改,元組是放在括號(hào)中叠荠,列表是放于方括號(hào)中匿沛。
x_vals = np.random.normal(1, 0.1, 100) 生成100個(gè)服從均值為1,方差為0.1的正態(tài)分布的元素也就是從均值為1榛鼎,方差為0.1的正態(tài)分布中輸出100個(gè)元素俺祠。
np.array 生成一個(gè)數(shù)組
np.random.choice? Generates
a random sample from a given 1-D array 抽樣
a1 = np.random.choice(a=5, size=3, replace=False, p=None)
從a 中以概率P公给,隨機(jī)選擇3個(gè), p沒有指定的時(shí)候相當(dāng)于是一致的分布replacement 代表的意思是抽樣之后還放不放回去
np.concatenate? #Join a sequence of arrays along an existingaxis. The arrays must have same shape
numpy.linspace
linspace的功能最初是從MATLAB中學(xué)來的,用此來創(chuàng)建等差數(shù)列蜘渣。近期用Python的時(shí)候發(fā)現(xiàn)也有這個(gè)功能淌铐,提供相應(yīng)功能的是numpy。在指定的間隔內(nèi)返回均勻間隔的數(shù)字蔫缸。
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
Return evenly spaced numbers over a specified interval.
Returnsnumevenly spaced samples,calculated over the interval [start,stop].
The endpoint of the interval can optionally be excluded.
numpy.matrix(data,dtype,copy):返回一個(gè)矩陣腿准,其中data為ndarray對(duì)象或者字符形式;dtype:為data的type拾碌;copy:為bool類型吐葱。
矩陣對(duì)象的屬性:
matrix.T transpose:返回矩陣的轉(zhuǎn)置矩陣
matrix.H hermitian (conjugate) transpose:返回復(fù)數(shù)矩陣的共軛元素矩陣
matrix.I inverse:返回矩陣的逆矩陣
matrix.A base array:返回矩陣基于的數(shù)組
numpy.mat
Interpret the input as a matrix.
Unlike matrix, asmatrix does not make a copy if the input is already a matrix
or an ndarray. Equivalent to matrix(data, copy=False).
numpy.matrix
Returns a matrix from an array-like object, orfrom a string of data. A matrix is a specialized 2-D array that retains its 2-Dnature through operations. It has certain special operators, such as * (matrixmultiplication) and ** (matrix power).
numpy.ndarray
An array object represents a multidimensional,homogeneous array of fixed-size items. An associated data-type object describesthe format of each element in the array (its byte-order, how many bytes itoccupies in memory, whether it is an integer, a floating point number, orsomething else, etc.)
numpy中的ndarray與array的區(qū)別、不同
翻譯自stackoverflow上的回答 https://stackoverflow.com/questions/15879315/what-is-the-difference-between-ndarray-and-array-in-numpy
問:What is the difference between ndarray and array in Numpy? Andwhere can I find the implementations in the numpy source code?
(Numpy中ndarray和array的區(qū)別是什么校翔?我在哪兒能夠找到numpy中相應(yīng)的實(shí)現(xiàn)弟跑?)
答:Well, np.array is just a convenience function to create anndarray, it is not a class itself.
(嗯,np.array只是一個(gè)便捷的函數(shù)防症,用來創(chuàng)建一個(gè)ndarray孟辑,它本身不是一個(gè)類)
Youcan also create an array using np.ndarray, but it is not the recommended way.From the docstring of np.ndarray:
(你也能夠用np.ndarray來創(chuàng)建,但這不是推薦的方式蔫敲。來自np.ndarray的文檔:)
Arrays should be constructed using array, zeros or empty … Theparameters given here refer to a low-level method (ndarray(…)) forinstantiating an array.
(Arrays 應(yīng)該能用array,zeros或empty來構(gòu)造…這里的參數(shù)和一個(gè)實(shí)例化array的低層方法與有關(guān))
Mostof the meat of the implementation is in C code, here in multiarray, but you canstart looking at the ndarray interfaces here:
https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py
下面讓我們來看看ndarray數(shù)組對(duì)象是如何在內(nèi)存中儲(chǔ)存的饲嗽。
dtype對(duì)象則知道如何將元素的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為可用的值。如上圖每32位表示一個(gè)有用數(shù)據(jù)
dim count表示數(shù)組維數(shù)奈嘿,上圖為2維數(shù)組
dimmension 3×3給出數(shù)組的shape
strides中保存的是當(dāng)每個(gè)軸的下標(biāo)增加1時(shí)貌虾,數(shù)據(jù)存儲(chǔ)區(qū)中的指針?biāo)黾拥淖止?jié)數(shù)。例如圖中的strides為12,4裙犹,即第0軸的下標(biāo)增加1時(shí)尽狠,數(shù)據(jù)的地址增加12個(gè)字節(jié):即a[1,0]的地址比a[0,0]的地址要高12個(gè)字節(jié),正好是3個(gè)單精度浮點(diǎn)數(shù)的總字節(jié)數(shù)叶圃;第1軸下標(biāo)增加1時(shí)袄膏,數(shù)據(jù)的地址增加4個(gè)字節(jié),正好是單精度浮點(diǎn)數(shù)的字節(jié)數(shù)盗似。
注意numpy里有兩種數(shù)據(jù)類型,ndarray和matrix平项,一般用ndarray赫舒,要用到矩陣的乘除法時(shí)再用matrix。
numpy.nan_to_num
Replace nan with zero and inf with large finite numbers.
If x is inexact, NaN is replaced by zero,and infinity and -infinity replaced by the respectively largest and most negative finite floating point values representable by x.dtype.
For complex dtypes, the above is applied to each of the real and imaginary components of x separately.
If x is not inexact, then no replacements are made.
np.mean()函數(shù)功能:求取均值
經(jīng)常操作的參數(shù)為axis闽瓢,以m *n矩陣舉例:
axis 不設(shè)置值接癌,對(duì) m*n個(gè)數(shù)求均值,返回一個(gè)實(shí)數(shù)
axis = 0:壓縮行扣讼,對(duì)各列求均值缺猛,返回1* n 矩陣
axis =1 :壓縮列,對(duì)各行求均值,返回m *1 矩陣
Pythonsplit()通過指定分隔符對(duì)字符串進(jìn)行切片荔燎,如果參數(shù) num 有指定值耻姥,則僅分隔 num 個(gè)子字符串
split() 方法語法:str.split(str="", num=string.count(str)).
參數(shù)
str -- 分隔符,默認(rèn)為所有的空字符有咨,包括空格琐簇、換行(\n)、制表符(\t)等座享。
num -- 分割次數(shù)婉商。
返回值
返回分割后的字符串列表。
實(shí)例
以下實(shí)例展示了split()函數(shù)的使用方法:
#!/usr/bin/python
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( );
print str.split(' ', 1 );
以上實(shí)例輸出結(jié)果如下:
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
np.nan_to_num(x, copy=True)
replace nan with 0 and inf with large finite numbers
使用0代替數(shù)組x中的nan元素渣叛,使用有限的數(shù)字代替inf元素
>>> x = np.array([np.inf, -np.inf, np.nan, -128, 128])
>>> np.nan_to_num(x)
array([? 1.79769313e+308,? -1.79769313e+308,? 0.00000000e+000,
? ? ? ? -1.28000000e+002,? 1.28000000e+002])
>>> y = np.array([complex(np.inf, np.nan), np.nan, complex(np.nan, np.inf)])
>>> np.nan_to_num(y)
array([? 1.79769313e+308 +0.00000000e+000j,
? ? ? ? 0.00000000e+000 +0.00000000e+000j,
? ? ? ? 0.00000000e+000 +1.79769313e+308j])