Numpy 中文用戶指南 3.2 創(chuàng)建數(shù)組

原文:Array creation

譯者:飛龍

?

另見

數(shù)組創(chuàng)建例程

導(dǎo)言

數(shù)組創(chuàng)建的一般機(jī)制有五種:

  • 從其它Python的結(jié)構(gòu)轉(zhuǎn)換(如列表和元組)
  • 內(nèi)置的NumPy數(shù)組創(chuàng)建對(duì)象(如 arange, ones, zeros以及其它)
  • 從磁盤中讀取標(biāo)準(zhǔn)或自定義格式的數(shù)據(jù)
  • 通過使用字符串或者緩沖區(qū)酣胀,從原始的字節(jié)創(chuàng)建數(shù)組
  • 使用特殊的庫(kù)函數(shù)(比如random

本節(jié)不會(huì)涉及復(fù)制和連接等擴(kuò)展和轉(zhuǎn)換現(xiàn)有數(shù)組的方法弄匕,也不會(huì)涉及創(chuàng)建對(duì)象數(shù)組和結(jié)構(gòu)化數(shù)組蝎土。這些會(huì)在它們自己的章節(jié)中講述岭洲。

將Python類似數(shù)組的對(duì)象轉(zhuǎn)換為NumPy數(shù)組

通常,Python中排列為數(shù)組結(jié)構(gòu)的數(shù)值數(shù)據(jù)可以通過array()函數(shù)來轉(zhuǎn)換成數(shù)組逻翁,典型的例子就是列表和元組龙填。具體使用方法請(qǐng)見array()函數(shù)的文檔。一些對(duì)象也支持?jǐn)?shù)組的協(xié)議尸曼,并且可以用這種方法轉(zhuǎn)換成數(shù)組们何。辨識(shí)一個(gè)對(duì)象是否能轉(zhuǎn)換為數(shù)組,最簡(jiǎn)單的方法就是在交互式環(huán)境中嘗試這一方法控轿,看看它是否有效(即Python之道)冤竹。

例如:

>>> x = np.array([2,3,1,0])
>>> x = np.array([2, 3, 1, 0])
>>> x = np.array([[1,2.0],[0,0],(1+1j,3.)]) # note mix of tuple and lists,
    and types
>>> x = np.array([[ 1.+0.j, 2.+0.j], [ 0.+0.j, 0.+0.j], [ 1.+1.j, 3.+0.j]])

內(nèi)置的NumPy數(shù)組創(chuàng)建

NumPy具有從無到有創(chuàng)建數(shù)組的內(nèi)置功能:

zeros(shape) 將創(chuàng)建一個(gè)填充為0的指定形狀的數(shù)組。

>>> np.zeros((2, 3)) array([[ 0., 0., 0.], [ 0., 0., 0.]])

ones(shape) 將創(chuàng)建一個(gè)填充為1的數(shù)組茬射。在其他所有方面都和zeros相同鹦蠕。

arange()將創(chuàng)建有規(guī)律的增量值數(shù)組。它的幾種用法請(qǐng)見docstring在抛。這里給出幾個(gè)例子:

>>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.arange(2, 10, dtype=np.float)
array([ 2., 3., 4., 5., 6., 7., 8., 9.])
>>> np.arange(2, 3, 0.1)
array([ 2. , 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9])

請(qǐng)注意钟病,關(guān)于最后一個(gè)用例,有一些使用技巧霜定,請(qǐng)見arrange的docstring档悠。

linspace()將以指定數(shù)量的元素創(chuàng)建數(shù)組,并平分開始值和結(jié)束值望浩。例如:

>>> np.linspace(1., 4., 6)
array([ 1. ,  1.6,  2.2,  2.8,  3.4,  4. ])

這些創(chuàng)建函數(shù)的好處是作煌,可以保證元素個(gè)數(shù)、起始點(diǎn)和結(jié)束點(diǎn)汹押,arange()一般不會(huì)指定任意的起始值剂公、結(jié)束值和步長(zhǎng)。

indices()將創(chuàng)建數(shù)組的集合(用一維數(shù)組來模擬高維數(shù)組)典挑,每一維都有表示它的變量酥宴。一個(gè)例子說明比口頭描述好得多:

>>> np.indices((3,3))
array([[[0, 0, 0], [1, 1, 1], [2, 2, 2]], [[0, 1, 2], [0, 1, 2], [0, 1, 2]]])

計(jì)算規(guī)則網(wǎng)格上的高維函數(shù)時(shí),這會(huì)非常有用您觉。

從磁盤讀取數(shù)組

這大概是大數(shù)組創(chuàng)建的最常見情況拙寡。當(dāng)然,細(xì)節(jié)取決于磁盤上的數(shù)據(jù)格式琳水,所以這一節(jié)只能給出如何處理各種格式的一般建議肆糕。

標(biāo)準(zhǔn)二進(jìn)制格式

各個(gè)領(lǐng)域都有數(shù)組數(shù)據(jù)的標(biāo)準(zhǔn)格式。以下列出了用于讀取和返回NumPy數(shù)組的已知Python庫(kù)(也有其它的庫(kù)可以讀取數(shù)組并轉(zhuǎn)換為NumPy數(shù)組在孝,所以也請(qǐng)看一下最后一節(jié))

HDF5: PyTables
FITS: PyFITS

一些格式不能直接讀取诚啃,但是不難將其轉(zhuǎn)換為類似PIL庫(kù)(能夠讀寫許多圖像格式,例如jpg私沮、png以及其它)所支持的格式始赎。

普通的ASCII格式

逗號(hào)分隔值文件(CSV)被廣泛使用(可以被類似Excel的一些程序?qū)雽?dǎo)出)。有一些在python中讀取這些文件的方法,例如Python和pylab(Matplotlib的一部分)中的函數(shù)造垛。

更通用的ASCII文件可以使用SciPy的IO包來讀取魔招。

自定義二進(jìn)制格式

有多種方法可以使用。如果文件有一個(gè)相對(duì)簡(jiǎn)單的格式筋搏,那么你可以寫一個(gè)簡(jiǎn)單的I/O庫(kù)并使用numpy fromfile()tofile()方法直接讀寫NumPy數(shù)組(注意字節(jié)順序F桶佟)。如果有一個(gè)不錯(cuò)的C/C++庫(kù)可以用于讀取數(shù)據(jù)奔脐,則可以用各種技巧把它封裝一下俄周,雖然這可能要耗費(fèi)一些工作量,也需要更多高級(jí)的知識(shí)來和C/C++交互髓迎。

特殊庫(kù)的使用

有一些庫(kù)可以用于生成特殊用途的數(shù)組峦朗,這樣的庫(kù)不可能全部列舉出來。最常見的用法是使用許多數(shù)組生成函數(shù)來產(chǎn)生帶有隨機(jī)值的數(shù)組排龄,以及使用一些生成特殊矩陣(如對(duì)角線)的功能函數(shù)波势。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市橄维,隨后出現(xiàn)的幾起案子尺铣,更是在濱河造成了極大的恐慌,老刑警劉巖争舞,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凛忿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡竞川,警方通過查閱死者的電腦和手機(jī)店溢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來委乌,“玉大人床牧,你說我怎么就攤上這事≡饷常” “怎么了戈咳?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)壕吹。 經(jīng)常有香客問我著蛙,道長(zhǎng),這世上最難降的妖魔是什么算利? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮泳姐,結(jié)果婚禮上效拭,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好缎患,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布慕的。 她就那樣靜靜地躺著,像睡著了一般挤渔。 火紅的嫁衣襯著肌膚如雪肮街。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天判导,我揣著相機(jī)與錄音嫉父,去河邊找鬼。 笑死眼刃,一個(gè)胖子當(dāng)著我的面吹牛绕辖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播擂红,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼仪际,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了昵骤?” 一聲冷哼從身側(cè)響起树碱,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎变秦,沒想到半個(gè)月后成榜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伴栓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年伦连,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钳垮。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惑淳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出饺窿,到底是詐尸還是另有隱情歧焦,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布肚医,位于F島的核電站绢馍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏肠套。R本人自食惡果不足惜舰涌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望你稚。 院中可真熱鬧瓷耙,春花似錦朱躺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至鸡典,卻和暖如春源请,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背彻况。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工谁尸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疗垛。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓症汹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親贷腕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子背镇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容