作者:王大偉 博客專欄:https://www.hellobi.com/u/wangdawei/articles Python愛好者社區(qū) 唯一小編
這幾天很忙啊,所以也沒時間靜下心來寫文章,現(xiàn)在好點了,我們繼續(xù)numpy官網(wǎng)之旅
import numpy as np
a = np.floor(10*np.random.random((3,4)))
a
a.resize((2,6))
a
注:改變a數(shù)組形狀
如果在改變形狀操作中將尺寸給定為-1,則會自動計算其尺寸:
a.reshape(3,-1)
查看這部分更多更詳細的用法可以看:https://docs.scipy.org/doc/numpy-dev/user/quickstart.html
下圖部分:
幾個數(shù)組可以沿不同的軸堆疊在一起:
a = np.floor(10*np.random.random((2,2)))
a
b = np.floor(10*np.random.random((2,2)))
b
np.vstack((a,b))
注:這里v是vertical的縮寫,意思是垂直方向,所以這里是按照豎直方向堆疊數(shù)組
np.hstack((a,b))
注:這里的h是horizontal的縮寫,是水平方向,所以這里是指的水平方向堆疊數(shù)組
函數(shù)column_stack將1維數(shù)組作為列堆疊成2維數(shù)組。
from numpy import newaxis
np.column_stack((a,b))
注:水平方向堆疊成二維數(shù)組
a = np.array([4.,2.])
b = np.array([2.,8.])
a[:,newaxis]
注:切片出二維數(shù)組
np.column_stack((a[:,newaxis],b[:,newaxis]))
注:將兩個切片的二維數(shù)組組成新的二維數(shù)組
np.vstack((a[:,newaxis],b[:,newaxis]))
注:豎直方向堆疊出新的二維數(shù)組
注意:在復雜情況下,r_和c_對于通過沿一個軸堆疊數(shù)字來創(chuàng)建數(shù)組很有用。 它們允許使用范圍文字(“:”)
np.r_[1:4,0,4]
注:1—3,0,4組成數(shù)組
當使用數(shù)組作為參數(shù)時,r_和c_在其默認行為中類似于vstack和hstack,但允許使用可選參數(shù)來指定要連接的軸數(shù)。
查看這部分更多更詳細的用法可以看:https://docs.scipy.org/doc/numpy-dev/user/quickstart.html
下圖部分:
使用hsplit,可以沿著水平軸拆分數(shù)組,方法是指定要返回的等同形狀數(shù)組的數(shù)量,或者指定之后應該進行拆分的列
a = np.floor(10*np.random.random((2,12)))
a
np.hsplit(a,3)
注:將a數(shù)組水平方向切分成相等的3份
np.hsplit(a,(3,4))
注:從第三個和第四個后面分別切一刀,水平分成3塊新數(shù)組
np.hsplit(a,(3,))
注:從第三個后面切一刀,水平分成2塊新數(shù)組
vsplit沿垂直軸分割,而array_split允許用來指定要分割的軸:
np.vsplit(a,(1,))
注:從第一行后面切一刀,垂直分成2塊新數(shù)組
當操作數(shù)組時,它們的數(shù)據(jù)有時被復制到一個新的數(shù)組中,有時候不會。 這往往是初學者混亂的根源。 有三種情況:
簡單的賦值不會使數(shù)組對象或其數(shù)據(jù)被復制
a = np.arange(12)
b = a
b is a
注:這里a和b指向的是同一個數(shù)組,操作時并沒有產(chǎn)生新的復制內(nèi)容
b.shape = 3,4
a.shape
注:這里改變b數(shù)組的形狀,a的也發(fā)生了變化,說明這里a和b指向的是同一個數(shù)組
Python將可變對象作為引用傳遞,因此函數(shù)調(diào)用不會復制一份新的
def f(x):
print(id(x))
id(a)
f(a)
注:這里函數(shù)返回的結果id是相同的,所以函數(shù)調(diào)用不會復制一份新的內(nèi)容(id是對象的唯一標識)
不同的數(shù)組對象可以共享相同的數(shù)據(jù)。 視圖方法創(chuàng)建一個包含相同數(shù)據(jù)的新數(shù)組對象
c = a.view()
c is a
注:通過view方法生成的c已經(jīng)和a不是同一個了
c.base is a
注:c是基于a的
c.flags.owndata
注:c擁有數(shù)據(jù)?:并沒有(因為c是拷貝了a的)
a.flags.owndata
注:a擁有數(shù)據(jù)
c.shape = 2,6
注:c的形狀(3行4列)
c[0,4] = 1234
a
注:在c中修改會傳到a中,因為數(shù)據(jù)實際保存在a中
切換數(shù)組返回其視圖:
s = a[ : , 1:3]
s[:] = 10
a
注:s[:]是s的視圖。注意s=10 和 s[:]=10的不同
深層復制方法將完整復制數(shù)組及其數(shù)據(jù)
d = a.copy()
d is a
注:創(chuàng)建了新的數(shù)組和新的數(shù)據(jù)
d.base is a
注:d沒有和a共享任何數(shù)據(jù)
d[0,0] = 9999
a
注:d內(nèi)容修改不會影響a
這里列出了一些有用的NumPy函數(shù)和方法, 有關完整列表,請參閱例程:
https://docs.scipy.org/doc/numpy-dev/reference/routines.html#routines
今天更新內(nèi)容比較少,昨晚沒睡好,精神不佳,學校太熱了。
未完待續(xù)~近期更新~謝謝觀賞~希望對你學習有幫助~
關注公眾號,“Python愛好者社區(qū)”,回復“爬蟲”即可獲取崔老師爬蟲免費學習視頻。
為大家提供與Python相關的最新技術和資訊。
聯(lián)系客服