numpy常用操作

np.newaxis增加array維度

a[:, np.newaxis] # 給a最外層中括號中的每一個元素加[]
a[np.newaxis, :] # 給a最外層中括號中所有元素加[]
對一維數(shù)組有:

x = np.random.randint(1, 8, size=5)
Out[1]: array([4, 6, 6, 6, 5])
x1 = x[np.newaxis, :]
Out[2]: array([[4, 6, 6, 6, 5]])
x2 = x[:, np.newaxis]
Out[3]: 
array([[4],
       [6],
       [6],
       [6],
       [5]])

若不使用numpy也可以concat = concat[None], 但只能用于一維數(shù)組:
參考 https://www.jb51.net/article/144967.htm

numpy.concatenate() 數(shù)組拼接

方法1: 使用list的extend()
首先將數(shù)組轉(zhuǎn)成列表觉渴,然后利用列表的拼接函數(shù)append()沐鼠、extend()等進(jìn)行拼接處理崔兴,最后將列表轉(zhuǎn)成數(shù)組匀奏。該方法只適用于簡單的一維數(shù)組拼接,由于轉(zhuǎn)換過程很耗時間门驾,對于大量數(shù)據(jù)的拼接一般不建議使用射赛。
方法二: 使用numpy.append()
numpy直接提供了numpy.append(arr, values, axis=None)函數(shù)。對于參數(shù)規(guī)定奶是,要么一個數(shù)組和一個數(shù)值楣责;要么兩個數(shù)組,不能三個及以上數(shù)組直接append拼接聂沙。
注意: numpy的數(shù)組沒有動態(tài)改變大小的功能秆麸,numpy.append()函數(shù)每次都會重新分配整個數(shù)組,并把原來的數(shù)組復(fù)制到新數(shù)組中及汉。
方法三: 使用numpy.concatenate()
numpy提供了numpy.concatenate((a1,a2,...), axis=0)函數(shù)沮趣。能夠一次完成多個數(shù)組的拼接。其中a1,a2,...是數(shù)組類型的參數(shù)坷随。concatenate()效率比append()高房铭,適合大規(guī)模的數(shù)據(jù)拼接。

np.concatenate((a,b),axis=1)  #axis=1表示對應(yīng)行的數(shù)組進(jìn)行拼接

默認(rèn)情況下温眉,axis=0可以不寫缸匪。對于一維數(shù)組拼接,axis的值不影響最后的結(jié)果类溢。

參考 https://blog.csdn.net/qq_38150441/article/details/80488800

numpy.random.RandomState()

可以通過numpy工具包生成模擬數(shù)據(jù)集凌蔬,使用RandomState獲得隨機(jī)數(shù)生成器

from numpy.random import RandomState
rdm = RandomState(1)

注意:這里1為隨機(jī)數(shù)種子,只要隨機(jī)數(shù)種子seed相同闯冷,產(chǎn)生的隨機(jī)數(shù)系列就相同
均勻分布:

a = rdm.uniform(1,2,(3,4))
print(a)

輸出結(jié)果為:

[[1.417022   1.72032449 1.00011437 1.30233257]
 [1.14675589 1.09233859 1.18626021 1.34556073]
 [1.39676747 1.53881673 1.41919451 1.6852195 ]]

產(chǎn)生一個3行4列的數(shù)組砂心,其中每個元素都是在[1,2]區(qū)間內(nèi)均勻分布的隨機(jī)數(shù)
[0, 1)之間的隨機(jī)分布:

b = rdm.rand(1,2)
print(b)

輸出為:

[[0.417022   0.72032449]]

注意:這里的rand()里面的值若為0,就表示會隨機(jī)產(chǎn)生一個[0,1)之間的隨機(jī)數(shù)蛇耀,并不是一個一維數(shù)組计贰,且0可以包括,1不包含蒂窒。當(dāng)rand()里面數(shù)為1時躁倒,產(chǎn)生一個一維的一個數(shù)字?jǐn)?shù)組。rand(2)返回一個一維的2個數(shù)字?jǐn)?shù)組.

  • np.random.rand(): 同rdm.rand(), rand()返回一個數(shù)字, rand(1)返回一個一維的1個數(shù)字?jǐn)?shù)組, rand(2)返回一個一維的2個數(shù)字?jǐn)?shù)組, 要注意區(qū)分.
  • np.random.randn(): 同上, 只是服從正態(tài)分布
  • numpy.random.randint(low, high=None, size=None, dtype=’l’): 通過low來指定起點洒琢,通過high來指定終點秧秉,通過size參數(shù)來指定數(shù)組的維度,通過dtype來確定類型衰抑。范圍包括low不包括high, 當(dāng)high未指定時范圍為[0, low), 默認(rèn)數(shù)據(jù)類型為np.int.
  • np.random.random(size=None): 生成[0, 1)之間的浮點數(shù),

np.hstack(), np.vstack()

np.hstack()按水平方向堆疊成一個新的數(shù)組, 即把所有行放入到一個數(shù)組中, 由(150,2)變成(300,), np.vstack()按豎直方向. 該操作目的本質(zhì)上就是把list變成ndarray, 因為list無list[:, 0]這種切片操作. 且list[0]返回的是一維列表, list[0:1]返回的是二維列表, 雖然內(nèi)容相同

data = np.hstack(data).reshape(-1, 2) # reshape中-1可以自動根據(jù)其他的參數(shù)計算出-1處需要的參數(shù)
label = np.hstack(label).reshape(-1, 1)

np.meshgrid()

也叫np.mgrid(), 當(dāng)傳入兩個一維數(shù)組時, np.meshgrid(x, y)先以x為每一行, 共len(y)行組成二維數(shù)組; 再以y的轉(zhuǎn)置為每一列, 共len(x)列組成二維數(shù)組, 最后返回兩個形狀相同的二維數(shù)組組成的列表.
注: numpy中一維數(shù)組均為列向量, 實質(zhì)上是x的轉(zhuǎn)置成為每一行, 只不過這里為了方便觀察反過來了

若兩個參數(shù)均為多維數(shù)組, 則np.meshgrid()返回的第一個數(shù)組為len(y)行, 每一行相當(dāng)于做了一個x.ravel()或np.hstack(x); 第二個數(shù)組為len(x)列, 每一列相當(dāng)于y.ravel()的轉(zhuǎn)置.
其中x.ravel()將所有元素匯總成同一行, 相當(dāng)于np.hstack(x)

x = np.array([[0, 1, 2, 3], [4, 5, 6, 7]])
y = np.array([[11, 12, 13], [14, 15, 16]])
np.meshgrid(x, y)
OUT: 
[array([[0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7],
        [0, 1, 2, 3, 4, 5, 6, 7]]), array([[11, 11, 11, 11, 11, 11, 11, 11],
        [12, 12, 12, 12, 12, 12, 12, 12],
        [13, 13, 13, 13, 13, 13, 13, 13],
        [14, 14, 14, 14, 14, 14, 14, 14],
        [15, 15, 15, 15, 15, 15, 15, 15],
        [16, 16, 16, 16, 16, 16, 16, 16]])]

np.c_[], np.r_[]

np.c_[], np.r_[]必須使用方括號傳入數(shù)組
  • np.r_[]是按列連接兩個矩陣象迎,就是把兩矩陣上下相加,要求列數(shù)相等呛踊。相當(dāng)于np.concatenate([xx, yy], axis=0)或者np.row_stack([xx, yy])
    當(dāng)輸入為一維數(shù)組時視為2個列向量縱向拼接
  • np.c_[]是按行連接兩個矩陣砾淌,就是把兩矩陣左右相加,要求行數(shù)相等谭网。相當(dāng)于np.concatenate([xx, yy], axis=1)或者np.column_stack([xx, yy])
    當(dāng)輸入為一維數(shù)組時視為2個列向量橫向拼接

在numpy中汪厨,一個一維數(shù)組雖然是橫著表示的,但它是列向量愉择。

np.repeat()和np.tile()

主要用于對齊Proposal和RoI以逐一進(jìn)行比較, tf中沒有repeat()函數(shù), 使用tf.tile()和tf.reshape()達(dá)到同樣效果

boxes1 = [[0,0,3,3], [1,1,5,5], [9,9,11,11]]
boxes2 = [[0,0,2,2], [1,1,3,3], [4,4,6,6], [6,6,9,9], [11,11,13,13]]
b1 = np.repeat(boxes1, np.shape(boxes2)[0], axis=0)
b2 = np.tile(boxes2, [np.shape(boxes1)[0], 1])
with tf.Session() as sess:
    print(sess.run(b1, b2))

輸出為
[[ 0  0  3  3]
 [ 0  0  3  3]
 [ 0  0  3  3]
 [ 0  0  3  3]
 [ 0  0  3  3]
 [ 1  1  5  5]
 [ 1  1  5  5]
 [ 1  1  5  5]
 [ 1  1  5  5]
 [ 1  1  5  5]
 [ 9  9 11 11]
 [ 9  9 11 11]
 [ 9  9 11 11]
 [ 9  9 11 11]
 [ 9  9 11 11]] 
[[ 0  0  2  2]
 [ 1  1  3  3]
 [ 4  4  6  6]
 [ 6  6  9  9]
 [11 11 13 13]
 [ 0  0  2  2]
 [ 1  1  3  3]
 [ 4  4  6  6]
 [ 6  6  9  9]
 [11 11 13 13]
 [ 0  0  2  2]
 [ 1  1  3  3]
 [ 4  4  6  6]
 [ 6  6  9  9]
 [11 11 13 13]]

np.argmax()

axis=0返回每一列最大值的位置, axis=1返回每一行最大值的位置

test = np.array([[1, 2, 3], [2, 3, 4], [5, 4, 3], [8, 7, 2]])
np.argmax(test, 0)  〗俾摇#輸出:array([3, 3, 1]), 即[8, 7, 4]的位置
np.argmax(test, 1)   #輸出:array([2, 2, 0, 0]), 即[3, 4, 5, 8]的位置
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锥涕,一起剝皮案震驚了整個濱河市衷戈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌层坠,老刑警劉巖殖妇,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異破花,居然都是意外死亡谦趣,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門旧乞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔚润,“玉大人,你說我怎么就攤上這事尺栖〉站溃” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵延赌,是天一觀的道長除盏。 經(jīng)常有香客問我,道長挫以,這世上最難降的妖魔是什么者蠕? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮掐松,結(jié)果婚禮上踱侣,老公的妹妹穿的比我還像新娘粪小。我一直安慰自己,他們只是感情好抡句,可當(dāng)我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布探膊。 她就那樣靜靜地躺著,像睡著了一般待榔。 火紅的嫁衣襯著肌膚如雪逞壁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天锐锣,我揣著相機(jī)與錄音腌闯,去河邊找鬼。 笑死雕憔,一個胖子當(dāng)著我的面吹牛姿骏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播橘茉,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼工腋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了畅卓?” 一聲冷哼從身側(cè)響起擅腰,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翁潘,沒想到半個月后趁冈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡拜马,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年渗勘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俩莽。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡旺坠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扮超,到底是詐尸還是另有隱情取刃,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布出刷,位于F島的核電站璧疗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏馁龟。R本人自食惡果不足惜崩侠,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坷檩。 院中可真熱鬧却音,春花似錦改抡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至八拱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涯塔,已是汗流浹背肌稻。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留匕荸,地道東北人爹谭。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像榛搔,于是被迫代替她去往敵國和親诺凡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,066評論 2 355