python:Numpy詳解

NumPy Ndarray 對(duì)象

NumPy 最重要的一個(gè)特點(diǎn)是其 N 維數(shù)組對(duì)象 ndarray贡茅,它是一系列同類型數(shù)據(jù)的集合苛谷,以 0 下標(biāo)為開(kāi)始進(jìn)行集合中元素的索引赊锚。

ndarray 對(duì)象是用于存放同類型元素的多維數(shù)組盗忱。

ndarray 中的每個(gè)元素在內(nèi)存中都有相同存儲(chǔ)大小的區(qū)域酱床。

ndarray 內(nèi)部由以下內(nèi)容組成:

  • 一個(gè)指向數(shù)據(jù)(內(nèi)存或內(nèi)存映射文件中的一塊數(shù)據(jù))的指針。

  • 數(shù)據(jù)類型或 dtype趟佃,描述在數(shù)組中的固定大小值的格子扇谣。

  • 一個(gè)表示數(shù)組形狀(shape)的元組,表示各維度大小的元組闲昭。

  • 一個(gè)跨度元組(stride)罐寨,其中的整數(shù)指的是為了前進(jìn)到當(dāng)前維度下一個(gè)元素需要"跨過(guò)"的字節(jié)數(shù)。

ndarray 的內(nèi)部結(jié)構(gòu):


image.png

跨度可以是負(fù)數(shù)序矩,這樣會(huì)使數(shù)組在內(nèi)存中后向移動(dòng)鸯绿,切片中 obj[::-1] 或 obj[:,::-1] 就是如此。

創(chuàng)建一個(gè) ndarray 只需調(diào)用 NumPy 的 array 函數(shù)即可:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
image.png

NumPy 數(shù)據(jù)類型

numpy 支持的數(shù)據(jù)類型比 Python 內(nèi)置的類型要多很多贮泞,基本上可以和 C 語(yǔ)言的數(shù)據(jù)類型對(duì)應(yīng)上楞慈,其中部分類型對(duì)應(yīng)為 Python 內(nèi)置的類型。下表列舉了常用 NumPy 基本類型啃擦。

  • bool_ 布爾型數(shù)據(jù)類型(True 或者 False)
  • int_ 默認(rèn)的整數(shù)類型(類似于 C 語(yǔ)言中的 long囊蓝,int32 或 int64)
  • intc 與 C 的 int 類型一樣,一般是 int32 或 int 64
  • intp 用于索引的整數(shù)類型(類似于 C 的 ssize_t令蛉,一般情況下仍然是 int32 或 int64)
  • int8 字節(jié)(-128 to 127)
  • int16 整數(shù)(-32768 to 32767)
  • int32 整數(shù)(-2147483648 to 2147483647)
  • int64 整數(shù)(-9223372036854775808 to 9223372036854775807)
  • uint8 無(wú)符號(hào)整數(shù)(0 to 255)
  • uint16 無(wú)符號(hào)整數(shù)(0 to 65535)
  • uint32 無(wú)符號(hào)整數(shù)(0 to 4294967295)
  • uint64 無(wú)符號(hào)整數(shù)(0 to 18446744073709551615)
  • float_ float64 類型的簡(jiǎn)寫(xiě)
  • float16 半精度浮點(diǎn)數(shù)聚霜,包括:1 個(gè)符號(hào)位,5 個(gè)指數(shù)位珠叔,10 個(gè)尾數(shù)位
  • float32 單精度浮點(diǎn)數(shù)蝎宇,包括:1 個(gè)符號(hào)位,8 個(gè)指數(shù)位祷安,23 個(gè)尾數(shù)位
  • float64 雙精度浮點(diǎn)數(shù)姥芥,包括:1 個(gè)符號(hào)位,11 個(gè)指數(shù)位汇鞭,52 個(gè)尾數(shù)位
  • complex_ complex128 類型的簡(jiǎn)寫(xiě)凉唐,即 128 位復(fù)數(shù)
  • complex64 復(fù)數(shù)庸追,表示雙 32 位浮點(diǎn)數(shù)(實(shí)數(shù)部分和虛數(shù)部分)
  • complex128 復(fù)數(shù),表示雙 64 位浮點(diǎn)數(shù)(實(shí)數(shù)部分和虛數(shù)部分)

numpy 的數(shù)值類型實(shí)際上是 dtype 對(duì)象的實(shí)例台囱,并對(duì)應(yīng)唯一的字符淡溯,包括 np.bool_,np.int32簿训,np.float32咱娶,等等。

數(shù)據(jù)類型對(duì)象 (dtype)

數(shù)據(jù)類型對(duì)象是用來(lái)描述與數(shù)組對(duì)應(yīng)的內(nèi)存區(qū)域如何使用强品,這依賴如下幾個(gè)方面:

  • 數(shù)據(jù)的類型(整數(shù)膘侮,浮點(diǎn)數(shù)或者 Python 對(duì)象)
  • 數(shù)據(jù)的大小(例如择懂, 整數(shù)使用多少個(gè)字節(jié)存儲(chǔ))
  • 數(shù)據(jù)的字節(jié)順序(小端法或大端法)
  • 在結(jié)構(gòu)化類型的情況下喻喳,字段的名稱另玖、每個(gè)字段的數(shù)據(jù)類型和每個(gè)字段所取的內(nèi)存塊的部分
  • 如果數(shù)據(jù)類型是子數(shù)組困曙,它的形狀和數(shù)據(jù)類型
    字節(jié)順序是通過(guò)對(duì)數(shù)據(jù)類型預(yù)先設(shè)定"<"或">"來(lái)決定的。"<"意味著小端法(最小值存儲(chǔ)在最小的地址谦去,即低位組放在最前面)慷丽。">"意味著大端法(最重要的字節(jié)存儲(chǔ)在最小的地址,即高位組放在最前面)鳄哭。

dtype 對(duì)象是使用以下語(yǔ)法構(gòu)造的:

numpy.dtype(object, align, copy)
  • object - 要轉(zhuǎn)換為的數(shù)據(jù)類型對(duì)象
  • align - 如果為 true要糊,填充字段使其類似 C 的結(jié)構(gòu)體。
  • copy - 復(fù)制 dtype 對(duì)象 妆丘,如果為 false锄俄,則是對(duì)內(nèi)置數(shù)據(jù)類型對(duì)象的引用

每個(gè)內(nèi)建類型都有一個(gè)唯一定義它的字符代碼,如下:


image.png

NumPy 數(shù)組屬性

NumPy 數(shù)組的維數(shù)稱為秩(rank)勺拣,一維數(shù)組的秩為 1奶赠,二維數(shù)組的秩為 2,以此類推药有。

在 NumPy中毅戈,每一個(gè)線性的數(shù)組稱為是一個(gè)軸(axis),也就是維度(dimensions)愤惰。比如說(shuō)苇经,二維數(shù)組相當(dāng)于是兩個(gè)一維數(shù)組,其中第一個(gè)一維數(shù)組中每個(gè)元素又是一個(gè)一維數(shù)組宦言。所以一維數(shù)組就是 NumPy 中的軸(axis)扇单,第一個(gè)軸相當(dāng)于是底層數(shù)組,第二個(gè)軸是底層數(shù)組里的數(shù)組奠旺。而軸的數(shù)量——秩蜘澜,就是數(shù)組的維數(shù)阻桅。

很多時(shí)候可以聲明 axis。axis=0兼都,表示沿著第 0 軸進(jìn)行操作嫂沉,即對(duì)每一列進(jìn)行操作;axis=1扮碧,表示沿著第1軸進(jìn)行操作趟章,即對(duì)每一行進(jìn)行操作。

NumPy 的數(shù)組中比較重要 ndarray 對(duì)象屬性有:


image.png

ndarray.flags 返回 ndarray 對(duì)象的內(nèi)存信息慎王,包含以下屬性:


image.png

NumPy 創(chuàng)建數(shù)組

ndarray 數(shù)組除了可以使用底層 ndarray 構(gòu)造器來(lái)創(chuàng)建外蚓土,也可以通過(guò)以下幾種方式來(lái)創(chuàng)建。

numpy.empty

numpy.empty 方法用來(lái)創(chuàng)建一個(gè)指定形狀(shape)赖淤、數(shù)據(jù)類型(dtype)且未初始化的數(shù)組:

numpy.empty(shape, dtype = float, order = 'C')

image.png

numpy.zeros
創(chuàng)建指定大小的數(shù)組蜀漆,數(shù)組元素以 0 來(lái)填充:

numpy.zeros(shape, dtype = float, order = 'C')

image.png

numpy.ones
創(chuàng)建指定形狀的數(shù)組,數(shù)組元素以 1 來(lái)填充:

numpy.ones(shape, dtype = None, order = 'C')
image.png

NumPy 從已有的數(shù)組創(chuàng)建數(shù)組

numpy.asarray
numpy.asarray 類似 numpy.array咱旱,但 numpy.asarray 只有三個(gè)确丢,比 numpy.array 少兩個(gè)。

numpy.asarray(a, dtype = None, order = None)

image.png

numpy.frombuffer
numpy.frombuffer 用于實(shí)現(xiàn)動(dòng)態(tài)數(shù)組吐限。

numpy.frombuffer 接受 buffer 輸入?yún)?shù)鲜侥,以流的形式讀入轉(zhuǎn)化成 ndarray 對(duì)象。

numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)

注意:buffer 是字符串的時(shí)候诸典,Python3 默認(rèn) str 是 Unicode 類型描函,所以要轉(zhuǎn)成 bytestring 在原 str 前加上 b。

image.png

numpy.fromiter
numpy.fromiter 方法從可迭代對(duì)象中建立 ndarray 對(duì)象狐粱,返回一維數(shù)組舀寓。

numpy.fromiter(iterable, dtype, count=-1)
image.png

NumPy 從數(shù)值范圍創(chuàng)建數(shù)組

numpy.arange
numpy 包中的使用 arange 函數(shù)創(chuàng)建數(shù)值范圍并返回 ndarray 對(duì)象,函數(shù)格式如下:

numpy.arange(start, stop, step, dtype)

根據(jù) start 與 stop 指定的范圍以及 step 設(shè)定的步長(zhǎng)肌蜻,生成一個(gè) ndarray互墓。

image.png

numpy.linspace
numpy.linspace 函數(shù)用于創(chuàng)建一個(gè)一維數(shù)組,數(shù)組是一個(gè)等差數(shù)列構(gòu)成的宋欺,格式如下:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

image.png

numpy.logspace
numpy.logspace 函數(shù)用于創(chuàng)建一個(gè)于等比數(shù)列轰豆。格式如下:

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

base 參數(shù)意思是取對(duì)數(shù)的時(shí)候 log 的下標(biāo)。


image.png

NumPy 切片和索引

ndarray對(duì)象的內(nèi)容可以通過(guò)索引或切片來(lái)訪問(wèn)和修改齿诞,與 Python 中 list 的切片操作一樣酸休。

ndarray 數(shù)組可以基于 0 - n 的下標(biāo)進(jìn)行索引,切片對(duì)象可以通過(guò)內(nèi)置的 slice 函數(shù)祷杈,并設(shè)置 start, stop 及 step 參數(shù)進(jìn)行斑司,從原數(shù)組中切割出一個(gè)新數(shù)組。

實(shí)例

import numpy as np
 
a = np.arange(10)
s = slice(2,7,2)   # 從索引 2 開(kāi)始到索引 7 停止,間隔為2
print (a[s])

輸出結(jié)果為:

[2  4  6]

以上實(shí)例中宿刮,我們首先通過(guò) arange() 函數(shù)創(chuàng)建 ndarray 對(duì)象互站。 然后,分別設(shè)置起始僵缺,終止和步長(zhǎng)的參數(shù)為 2胡桃,7 和 2。

我們也可以通過(guò)冒號(hào)分隔切片參數(shù) start:stop:step 來(lái)進(jìn)行切片操作:

實(shí)例

import numpy as np
 
a = np.arange(10)  
b = a[2:7:2]   # 從索引 2 開(kāi)始到索引 7 停止磕潮,間隔為 2
print(b)

輸出結(jié)果為:

[2  4  6]

冒號(hào) : 的解釋:如果只放置一個(gè)參數(shù)翠胰,如 [2],將返回與該索引相對(duì)應(yīng)的單個(gè)元素自脯。如果為 [2:]之景,表示從該索引開(kāi)始以后的所有項(xiàng)都將被提取。如果使用了兩個(gè)參數(shù)膏潮,如 [2:7]锻狗,那么則提取兩個(gè)索引(不包括停止索引)之間的項(xiàng)。

實(shí)例

import numpy as np
 
a = np.arange(10)  # [0 1 2 3 4 5 6 7 8 9]
b = a[5] 
print(b)

輸出結(jié)果為:

5

實(shí)例

import numpy as np
 
a = np.arange(10)
print(a[2:])

輸出結(jié)果為:

[2  3  4  5  6  7  8  9]

實(shí)例

import numpy as np
 
a = np.arange(10)  # [0 1 2 3 4 5 6 7 8 9]
print(a[2:5])

輸出結(jié)果為:

[2  3  4]

多維數(shù)組同樣適用上述索引提取方法:

實(shí)例

import numpy as np
 
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print(a)
# 從某個(gè)索引處開(kāi)始切割
print('從數(shù)組索引 a[1:] 處開(kāi)始切割')
print(a[1:])

輸出結(jié)果為:

[[1 2 3]
 [3 4 5]
 [4 5 6]]

從數(shù)組索引 a[1:] 處開(kāi)始切割

[[3 4 5]
 [4 5 6]]

切片還可以包括省略號(hào) …焕参,來(lái)使選擇元組的長(zhǎng)度與數(shù)組的維度相同轻纪。 如果在行位置使用省略號(hào),它將返回包含行中元素的 ndarray龟糕。

實(shí)例

import numpy as np
 
a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print (a[...,1])   # 第2列元素
print (a[1,...])   # 第2行元素
print (a[...,1:])  # 第2列及剩下的所有元素

輸出結(jié)果為:

[2 4 5]
[3 4 5]
[[2 3]
 [4 5]
 [5 6]]

NumPy 高級(jí)索引

  • 整數(shù)數(shù)組索引
  • 布爾索引
  • 花式索引

NumPy 廣播(Broadcast)

廣播(Broadcast)是 numpy 對(duì)不同形狀(shape)的數(shù)組進(jìn)行數(shù)值計(jì)算的方式桐磁, 對(duì)數(shù)組的算術(shù)運(yùn)算通常在相應(yīng)的元素上進(jìn)行悔耘。

如果兩個(gè)數(shù)組 a 和 b 形狀相同讲岁,即滿足 a.shape == b.shape,那么 a*b 的結(jié)果就是 a 與 b 數(shù)組對(duì)應(yīng)位相乘衬以。這要求維數(shù)相同缓艳,且各維度的長(zhǎng)度相同。

import numpy as np 
 
a = np.array([1,2,3,4]) 
b = np.array([10,20,30,40]) 
c = a * b 
print (c)

輸出結(jié)果為:

[ 10  40  90 160]

當(dāng)運(yùn)算中的 2 個(gè)數(shù)組的形狀不同時(shí)看峻,numpy 將自動(dòng)觸發(fā)廣播機(jī)制阶淘。如:

import numpy as np 
 
a = np.array([[ 0, 0, 0],
           [10,10,10],
           [20,20,20],
           [30,30,30]])
b = np.array([1,2,3])
print(a + b)

輸出結(jié)果為:

[[ 1  2  3]
 [11 12 13]
 [21 22 23]
 [31 32 33]]
image.png

廣播的規(guī)則:

  • 讓所有輸入數(shù)組都向其中形狀最長(zhǎng)的數(shù)組看齊,形狀中不足的部分都通過(guò)在前面加 1 補(bǔ)齊互妓。
  • 輸出數(shù)組的形狀是輸入數(shù)組形狀的各個(gè)維度上的最大值溪窒。
  • 如果輸入數(shù)組的某個(gè)維度和輸出數(shù)組的對(duì)應(yīng)維度的長(zhǎng)度相同或者其長(zhǎng)度為 1 時(shí),這個(gè)數(shù)組能夠用來(lái)計(jì)算冯勉,否則出錯(cuò)澈蚌。
  • 當(dāng)輸入數(shù)組的某個(gè)維度的長(zhǎng)度為 1 時(shí),沿著此維度運(yùn)算時(shí)都用此維度上的第一組值灼狰。

簡(jiǎn)單理解:對(duì)兩個(gè)數(shù)組宛瞄,分別比較他們的每一個(gè)維度(若其中一個(gè)數(shù)組沒(méi)有當(dāng)前維度則忽略),滿足:

  • 數(shù)組擁有相同形狀交胚。
  • 當(dāng)前維度的值相等份汗。
  • 當(dāng)前維度的值有一個(gè)是 1盈电。

若條件不滿足,拋出 "ValueError: frames are not aligned" 異常杯活。

NumPy 迭代數(shù)組

NumPy 迭代器對(duì)象 numpy.nditer 提供了一種靈活訪問(wèn)一個(gè)或者多個(gè)數(shù)組元素的方式匆帚。

迭代器最基本的任務(wù)的可以完成對(duì)數(shù)組元素的訪問(wèn)。

接下來(lái)我們使用 arange() 函數(shù)創(chuàng)建一個(gè) 2X3 數(shù)組旁钧,并使用 nditer 對(duì)它進(jìn)行迭代卷扮。

import numpy as np
 
a = np.arange(6).reshape(2,3)
print ('原始數(shù)組是:')
print (a)
print ('\n')
print ('迭代輸出元素:')
for x in np.nditer(a):
    print (x, end=", " )
print ('\n')

輸出結(jié)果為:

原始數(shù)組是:
[[0 1 2]
 [3 4 5]]


迭代輸出元素:
0, 1, 2, 3, 4, 5, 

以上實(shí)例不是使用標(biāo)準(zhǔn) C 或者 Fortran 順序,選擇的順序是和數(shù)組內(nèi)存布局一致的均践,這樣做是為了提升訪問(wèn)的效率晤锹,默認(rèn)是行序優(yōu)先(row-major order,或者說(shuō)是 C-order)彤委。

這反映了默認(rèn)情況下只需訪問(wèn)每個(gè)元素鞭铆,而無(wú)需考慮其特定順序。我們可以通過(guò)迭代上述數(shù)組的轉(zhuǎn)置來(lái)看到這一點(diǎn)焦影,并與以 C 順序訪問(wèn)數(shù)組轉(zhuǎn)置的 copy 方式做對(duì)比车遂,如下實(shí)例:

import numpy as np
 
a = np.arange(6).reshape(2,3)
for x in np.nditer(a.T):
    print (x, end=", " )
print ('\n')
 
for x in np.nditer(a.T.copy(order='C')):
    print (x, end=", " )
print ('\n')

輸出結(jié)果為:

0, 1, 2, 3, 4, 5, 

0, 3, 1, 4, 2, 5, 

從上述例子可以看出,a 和 a.T 的遍歷順序是一樣的斯辰,也就是他們?cè)趦?nèi)存中的存儲(chǔ)順序也是一樣的舶担,但是 a.T.copy(order = 'C') 的遍歷結(jié)果是不同的,那是因?yàn)樗颓皟煞N的存儲(chǔ)方式是不一樣的彬呻,默認(rèn)是按行訪問(wèn)衣陶。

控制遍歷順序
for x in np.nditer(a, order='F'):Fortran order,即是列序優(yōu)先闸氮;
for x in np.nditer(a.T, order='C'):C order剪况,即是行序優(yōu)先;

修改數(shù)組中元素的值
nditer 對(duì)象有另一個(gè)可選參數(shù) op_flags蒲跨。 默認(rèn)情況下译断,nditer 將視待迭代遍歷的數(shù)組為只讀對(duì)象(read-only),為了在遍歷數(shù)組的同時(shí)或悲,實(shí)現(xiàn)對(duì)數(shù)組元素值得修改孙咪,必須指定 read-write 或者 write-only 的模式。

使用外部循環(huán)
nditer類的構(gòu)造器擁有flags參數(shù)巡语,它可以接受下列值:

image.png

廣播迭代
如果兩個(gè)數(shù)組是可廣播的翎蹈,nditer 組合對(duì)象能夠同時(shí)迭代它們。 假設(shè)數(shù)組 a 的維度為 3X4捌臊,數(shù)組 b 的維度為 1X4 杨蛋,則使用以下迭代器(數(shù)組 b 被廣播到 a 的大小)。

Numpy 數(shù)組操作

修改數(shù)組形狀

image.png

numpy.reshape
numpy.reshape 函數(shù)可以在不改變數(shù)據(jù)的條件下修改形狀逞力,格式如下: numpy.reshape(arr, newshape, order='C')

  • arr:要修改形狀的數(shù)組
  • newshape:整數(shù)或者整數(shù)數(shù)組曙寡,新的形狀應(yīng)當(dāng)兼容原有形狀
  • order:'C' -- 按行,'F' -- 按列寇荧,'A' -- 原順序举庶,'k' -- 元素在內(nèi)存中的出現(xiàn)順序。

numpy.ndarray.flat
numpy.ndarray.flat 是一個(gè)數(shù)組元素迭代器

numpy.ndarray.flatten
numpy.ndarray.flatten 返回一份數(shù)組拷貝揩抡,對(duì)拷貝所做的修改不會(huì)影響原始數(shù)組户侥,格式如下:

ndarray.flatten(order='C')

參數(shù)說(shuō)明:

  • order:'C' -- 按行,'F' -- 按列峦嗤,'A' -- 原順序蕊唐,'K' -- 元素在內(nèi)存中的出現(xiàn)順序。

numpy.ravel
numpy.ravel() 展平的數(shù)組元素烁设,順序通常是"C風(fēng)格"替梨,返回的是數(shù)組視圖(view,有點(diǎn)類似 C/C++引用reference的意味)装黑,修改會(huì)影響原始數(shù)組副瀑。

該函數(shù)接收兩個(gè)參數(shù):

numpy.ravel(a, order='C')

參數(shù)說(shuō)明:

  • order:'C' -- 按行,'F' -- 按列恋谭,'A' -- 原順序糠睡,'K' -- 元素在內(nèi)存中的出現(xiàn)順序。

翻轉(zhuǎn)數(shù)組

image.png

numpy.transpose
numpy.transpose 函數(shù)用于對(duì)換數(shù)組的維度疚颊,格式如下:

numpy.transpose(arr, axes)

參數(shù)說(shuō)明:

  • arr:要操作的數(shù)組
  • axes:整數(shù)列表狈孔,對(duì)應(yīng)維度,通常所有維度都會(huì)對(duì)換串稀。

numpy.rollaxis
numpy.rollaxis 函數(shù)向后滾動(dòng)特定的軸到一個(gè)特定位置除抛,格式如下:

numpy.rollaxis(arr, axis, start)

參數(shù)說(shuō)明:

  • arr:數(shù)組
  • axis:要向后滾動(dòng)的軸,其它軸的相對(duì)位置不會(huì)改變
  • start:默認(rèn)為零母截,表示完整的滾動(dòng)。會(huì)滾動(dòng)到特定位置橄教。

numpy.swapaxes
numpy.swapaxes 函數(shù)用于交換數(shù)組的兩個(gè)軸清寇,格式如下:

numpy.swapaxes(arr, axis1, axis2)
  • arr:輸入的數(shù)組
  • axis1:對(duì)應(yīng)第一個(gè)軸的整數(shù)
  • axis2:對(duì)應(yīng)第二個(gè)軸的整數(shù)

修改數(shù)組維度

image.png

numpy.broadcast
numpy.broadcast 用于模仿廣播的對(duì)象,它返回一個(gè)對(duì)象护蝶,該對(duì)象封裝了將一個(gè)數(shù)組廣播到另一個(gè)數(shù)組的結(jié)果华烟。

numpy.broadcast_to
numpy.broadcast_to 函數(shù)將數(shù)組廣播到新形狀。它在原始數(shù)組上返回只讀視圖持灰。 它通常不連續(xù)盔夜。 如果新形狀不符合 NumPy 的廣播規(guī)則,該函數(shù)可能會(huì)拋出ValueError。

numpy.broadcast_to(array, shape, subok)

numpy.expand_dims
numpy.expand_dims 函數(shù)通過(guò)在指定位置插入新的軸來(lái)擴(kuò)展數(shù)組形狀喂链,函數(shù)格式如下:

 numpy.expand_dims(arr, axis)

參數(shù)說(shuō)明:

  • arr:輸入數(shù)組
  • axis:新軸插入的位置

numpy.squeeze
numpy.squeeze 函數(shù)從給定數(shù)組的形狀中刪除一維的條目返十,函數(shù)格式如下:

numpy.squeeze(arr, axis)

參數(shù)說(shuō)明:

  • arr:輸入數(shù)組
  • axis:整數(shù)或整數(shù)元組,用于選擇形狀中一維條目的子集

連接數(shù)組

image.png

numpy.concatenate
numpy.concatenate 函數(shù)用于沿指定軸連接相同形狀的兩個(gè)或多個(gè)數(shù)組椭微,格式如下:

numpy.concatenate((a1, a2, ...), axis)

參數(shù)說(shuō)明:

  • a1, a2, ...:相同類型的數(shù)組
  • axis:沿著它連接數(shù)組的軸洞坑,默認(rèn)為 0

numpy.stack
numpy.stack 函數(shù)用于沿新軸連接數(shù)組序列,格式如下:

numpy.stack(arrays, axis)

參數(shù)說(shuō)明:

  • arrays相同形狀的數(shù)組序列
  • axis:返回?cái)?shù)組中的軸蝇率,輸入數(shù)組沿著它來(lái)堆疊

numpy.hstack
numpy.hstack 是 numpy.stack 函數(shù)的變體迟杂,它通過(guò)水平堆疊來(lái)生成數(shù)組。

numpy.vstack
numpy.vstack 是 numpy.stack 函數(shù)的變體本慕,它通過(guò)垂直堆疊來(lái)生成數(shù)組排拷。

分割數(shù)組

image.png

numpy.split
numpy.split 函數(shù)沿特定的軸將數(shù)組分割為子數(shù)組,格式如下:

numpy.split(ary, indices_or_sections, axis)

參數(shù)說(shuō)明:

  • ary:被分割的數(shù)組
  • indices_or_sections:果是一個(gè)整數(shù)锅尘,就用該數(shù)平均切分蜒简,如果是一個(gè)數(shù)組肤无,為沿軸切分的位置(左開(kāi)右閉)
  • axis:沿著哪個(gè)維度進(jìn)行切向,默認(rèn)為0,橫向切分阶女。為1時(shí),縱向切分

numpy.hsplit
numpy.hsplit 函數(shù)用于水平分割數(shù)組阿逃,通過(guò)指定要返回的相同形狀的數(shù)組數(shù)量來(lái)拆分原數(shù)組逸绎。

numpy.vsplit
numpy.vsplit 沿著垂直軸分割,其分割方式與hsplit用法相同淆游。

數(shù)組元素的添加與刪除

image.png

numpy.resize
numpy.resize 函數(shù)返回指定大小的新數(shù)組傍睹。

如果新數(shù)組大小大于原始大小,則包含原始數(shù)組中的元素的副本犹菱。

numpy.resize(arr, shape)

參數(shù)說(shuō)明:

  • arr:要修改大小的數(shù)組
  • shape:返回?cái)?shù)組的新形狀

numpy.append
numpy.append 函數(shù)在數(shù)組的末尾添加值拾稳。 追加操作會(huì)分配整個(gè)數(shù)組,并把原來(lái)的數(shù)組復(fù)制到新數(shù)組中腊脱。 此外访得,輸入數(shù)組的維度必須匹配否則將生成ValueError。

append 函數(shù)返回的始終是一個(gè)一維數(shù)組陕凹。

numpy.append(arr, values, axis=None)

參數(shù)說(shuō)明:

  • arr:輸入數(shù)組
  • values:要向arr添加的值悍抑,需要和arr形狀相同(除了要添加的軸)
  • axis:默認(rèn)為 None。當(dāng)axis無(wú)定義時(shí)杜耙,是橫向加成搜骡,返回總是為一維數(shù)組!當(dāng)axis有定義的時(shí)候佑女,分別為0和1的時(shí)候记靡。當(dāng)axis有定義的時(shí)候谈竿,分別為0和1的時(shí)候(列數(shù)要相同)。當(dāng)axis為1時(shí)摸吠,數(shù)組是加在右邊(行數(shù)要相同)空凸。

numpy.insert
numpy.insert 函數(shù)在給定索引之前,沿給定軸在輸入數(shù)組中插入值蜕便。

如果值的類型轉(zhuǎn)換為要插入劫恒,則它與輸入數(shù)組不同。 插入沒(méi)有原地的轿腺,函數(shù)會(huì)返回一個(gè)新數(shù)組两嘴。 此外,如果未提供軸族壳,則輸入數(shù)組會(huì)被展開(kāi)憔辫。

numpy.insert(arr, obj, values, axis)

參數(shù)說(shuō)明:

  • arr:輸入數(shù)組
  • obj:在其之前插入值的索引
  • values:要插入的值
  • axis:沿著它插入的軸,如果未提供仿荆,則輸入數(shù)組會(huì)被展開(kāi)

numpy.delete
numpy.delete 函數(shù)返回從輸入數(shù)組中刪除指定子數(shù)組的新數(shù)組贰您。 與 insert() 函數(shù)的情況一樣,如果未提供軸參數(shù)拢操,則輸入數(shù)組將展開(kāi)锦亦。

Numpy.delete(arr, obj, axis)

參數(shù)說(shuō)明:

  • arr:輸入數(shù)組
  • obj:可以被切片,整數(shù)或者整數(shù)數(shù)組令境,表明要從輸入數(shù)組刪除的子數(shù)組
  • axis:沿著它刪除給定子數(shù)組的軸杠园,如果未提供,則輸入數(shù)組會(huì)被展開(kāi)

numpy.unique
numpy.unique 函數(shù)用于去除數(shù)組中的重復(fù)元素舔庶。

numpy.unique(arr, return_index, return_inverse, return_counts)
  • arr:輸入數(shù)組抛蚁,如果不是一維數(shù)組則會(huì)展開(kāi)
  • return_index:如果為true,返回新列表元素在舊列表中的位置(下標(biāo))惕橙,并以列表形式儲(chǔ)
  • return_inverse:如果為true瞧甩,返回舊列表元素在新列表中的位置(下標(biāo)),并以列表形式儲(chǔ)
  • return_counts:如果為true弥鹦,返回去重?cái)?shù)組中的元素在原數(shù)組中的出現(xiàn)次數(shù)

NumPy 位運(yùn)算

NumPy "bitwise_" 開(kāi)頭的函數(shù)是位運(yùn)算函數(shù)肚逸。

NumPy 位運(yùn)算包括以下幾個(gè)函數(shù):


image.png

NumPy 字符串函數(shù)

以下函數(shù)用于對(duì) dtype 為 numpy.string_ 或 numpy.unicode_ 的數(shù)組執(zhí)行向量化字符串操作。 它們基于 Python 內(nèi)置庫(kù)中的標(biāo)準(zhǔn)字符串函數(shù)惶凝。

這些函數(shù)在字符數(shù)組類(numpy.char)中定義吼虎。


image.png

NumPy 數(shù)學(xué)函數(shù)

三角函數(shù)
NumPy 提供了標(biāo)準(zhǔn)的三角函數(shù):sin()、cos()苍鲜、tan()。

舍入函數(shù)
numpy.around() 函數(shù)返回指定數(shù)字的四舍五入值玷犹。

numpy.around(a,decimals)

參數(shù)說(shuō)明:

  • a: 數(shù)組
  • decimals: 舍入的小數(shù)位數(shù)混滔。 默認(rèn)值為0洒疚。 如果為負(fù),整數(shù)將四舍五入到小數(shù)點(diǎn)左側(cè)的位置

numpy.floor()
numpy.floor() 返回?cái)?shù)字的下舍整數(shù)坯屿。

numpy.ceil()
numpy.ceil() 返回?cái)?shù)字的上入整數(shù)油湖。

NumPy 算術(shù)函數(shù)

NumPy 算術(shù)函數(shù)包含簡(jiǎn)單的加減乘除: add(),subtract()领跛,multiply() 和 divide()乏德。

需要注意的是數(shù)組必須具有相同的形狀或符合數(shù)組廣播規(guī)則。

此外 Numpy 也包含了其他重要的算術(shù)函數(shù)吠昭。

numpy.reciprocal()
numpy.reciprocal() 函數(shù)返回參數(shù)逐元素的倒數(shù)喊括。如 1/4 倒數(shù)為 4/1。

numpy.power()
numpy.power() 函數(shù)將第一個(gè)輸入數(shù)組中的元素作為底數(shù)矢棚,計(jì)算它與第二個(gè)輸入數(shù)組中相應(yīng)元素的冪郑什。

numpy.mod()
numpy.mod() 計(jì)算輸入數(shù)組中相應(yīng)元素的相除后的余數(shù)。 函數(shù) numpy.remainder() 也產(chǎn)生相同的結(jié)果蒲肋。

NumPy 統(tǒng)計(jì)函數(shù)

numpy.amin() 和 numpy.amax()
numpy.amin() 用于計(jì)算數(shù)組中的元素沿指定軸的最小值蘑拯。

numpy.amax() 用于計(jì)算數(shù)組中的元素沿指定軸的最大值。

numpy.ptp()
numpy.ptp()函數(shù)計(jì)算數(shù)組中元素最大值與最小值的差(最大值 - 最小值)兜粘。

numpy.percentile()
百分位數(shù)是統(tǒng)計(jì)中使用的度量申窘,表示小于這個(gè)值的觀察值的百分比。 函數(shù)numpy.percentile()接受以下參數(shù)孔轴。

numpy.percentile(a, q, axis)

參數(shù)說(shuō)明:

  • a: 輸入數(shù)組
  • q: 要計(jì)算的百分位數(shù)剃法,在 0 ~ 100 之間
  • axis: 沿著它計(jì)算百分位數(shù)的軸
    首先明確百分位數(shù):

第 p 個(gè)百分位數(shù)是這樣一個(gè)值,它使得至少有 p% 的數(shù)據(jù)項(xiàng)小于或等于這個(gè)值距糖,且至少有 (100-p)% 的數(shù)據(jù)項(xiàng)大于或等于這個(gè)值玄窝。

舉個(gè)例子:高等院校的入學(xué)考試成績(jī)經(jīng)常以百分位數(shù)的形式報(bào)告。比如悍引,假設(shè)某個(gè)考生在入學(xué)考試中的語(yǔ)文部分的原始分?jǐn)?shù)為 54 分恩脂。相對(duì)于參加同一考試的其他學(xué)生來(lái)說(shuō),他的成績(jī)?nèi)绾尾⒉蝗菀字廊そ铩5侨绻挤謹(jǐn)?shù)54分恰好對(duì)應(yīng)的是第70百分位數(shù),我們就能知道大約70%的學(xué)生的考分比他低浓领,而約30%的學(xué)生考分比他高玉凯。

這里的 p = 70。

numpy.median()
numpy.median() 函數(shù)用于計(jì)算數(shù)組 a 中元素的中位數(shù)(中值)

numpy.mean()
numpy.mean() 函數(shù)返回?cái)?shù)組中元素的算術(shù)平均值联贩。 如果提供了軸漫仆,則沿其計(jì)算。

算術(shù)平均值是沿軸的元素的總和除以元素的數(shù)量泪幌。

numpy.average()
numpy.average() 函數(shù)根據(jù)在另一個(gè)數(shù)組中給出的各自的權(quán)重計(jì)算數(shù)組中元素的加權(quán)平均值盲厌。

該函數(shù)可以接受一個(gè)軸參數(shù)署照。 如果沒(méi)有指定軸,則數(shù)組會(huì)被展開(kāi)吗浩。

加權(quán)平均值即將各數(shù)值乘以相應(yīng)的權(quán)數(shù)建芙,然后加總求和得到總體值,再除以總的單位數(shù)懂扼。

考慮數(shù)組[1,2,3,4]和相應(yīng)的權(quán)重[4,3,2,1]禁荸,通過(guò)將相應(yīng)元素的乘積相加,并將和除以權(quán)重的和阀湿,來(lái)計(jì)算加權(quán)平均值赶熟。

標(biāo)準(zhǔn)差
標(biāo)準(zhǔn)差是一組數(shù)據(jù)平均值分散程度的一種度量。

標(biāo)準(zhǔn)差是方差的算術(shù)平方根炕倘。

標(biāo)準(zhǔn)差公式如下:

std = sqrt(mean((x - x.mean())**2))

如果數(shù)組是 [1钧大,2,3罩旋,4]啊央,則其平均值為 2.5。 因此涨醋,差的平方是 [2.25,0.25,0.25,2.25]瓜饥,并且其平均值的平方根除以 4,即 sqrt(5/4) 浴骂,結(jié)果為 1.1180339887498949乓土。

方差
統(tǒng)計(jì)中的方差(樣本方差)是每個(gè)樣本值與全體樣本值的平均數(shù)之差的平方值的平均數(shù),即 mean((x - x.mean())** 2)溯警。

換句話說(shuō)趣苏,標(biāo)準(zhǔn)差是方差的平方根。

NumPy 排序梯轻、條件刷選函數(shù)

NumPy 提供了多種排序的方法食磕。 這些排序函數(shù)實(shí)現(xiàn)不同的排序算法,每個(gè)排序算法的特征在于執(zhí)行速度喳挑,最壞情況性能彬伦,所需的工作空間和算法的穩(wěn)定性。 下表顯示了三種排序算法的比較伊诵。


image.png

numpy.sort()
numpy.sort() 函數(shù)返回輸入數(shù)組的排序副本单绑。函數(shù)格式如下:

numpy.sort(a, axis, kind, order)

numpy.argsort()
numpy.argsort() 函數(shù)返回的是數(shù)組值從小到大的索引值。

numpy.lexsort()
numpy.lexsort() 用于對(duì)多個(gè)序列進(jìn)行排序曹宴。把它想象成對(duì)電子表格進(jìn)行排序搂橙,每一列代表一個(gè)序列,排序時(shí)優(yōu)先照顧靠后的列笛坦。

這里舉一個(gè)應(yīng)用場(chǎng)景:小升初考試份氧,重點(diǎn)班錄取學(xué)生按照總成績(jī)錄取唯袄。在總成績(jī)相同時(shí)弯屈,數(shù)學(xué)成績(jī)高的優(yōu)先錄取蜗帜,在總成績(jī)和數(shù)學(xué)成績(jī)都相同時(shí),按照英語(yǔ)成績(jī)錄取…… 這里资厉,總成績(jī)排在電子表格的最后一列厅缺,數(shù)學(xué)成績(jī)?cè)诘箶?shù)第二列,英語(yǔ)成績(jī)?cè)诘箶?shù)第三列宴偿。

msort湘捎、sort_complex、partition窄刘、argpartition

image.png

numpy.argmax() 和 numpy.argmin()
numpy.argmax() 和 numpy.argmin()函數(shù)分別沿給定軸返回最大和最小元素的索引窥妇。

numpy.nonzero()
numpy.nonzero() 函數(shù)返回輸入數(shù)組中非零元素的索引。

numpy.where()
numpy.where() 函數(shù)返回輸入數(shù)組中滿足給定條件的元素的索引娩践。

numpy.extract()
numpy.extract() 函數(shù)根據(jù)某個(gè)條件從數(shù)組中抽取元素活翩,返回滿條件的元素。

NumPy 字節(jié)交換

在幾乎所有的機(jī)器上翻伺,多字節(jié)對(duì)象都被存儲(chǔ)為連續(xù)的字節(jié)序列材泄。字節(jié)順序,是跨越多字節(jié)的程序?qū)ο蟮拇鎯?chǔ)規(guī)則吨岭。

  • 大端模式:指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的低地址中拉宗,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的高地址中,這樣的存儲(chǔ)模式有點(diǎn)兒類似于把數(shù)據(jù)當(dāng)作字符串順序處理:地址由小向大增加辣辫,而數(shù)據(jù)從高位往低位放旦事;這和我們的閱讀習(xí)慣一致。

  • 小端模式:指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中急灭,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址中姐浮,這種存儲(chǔ)模式將地址的高低和數(shù)據(jù)位權(quán)有效地結(jié)合起來(lái),高地址部分權(quán)值高化戳,低地址部分權(quán)值低单料。

例如在 C 語(yǔ)言中,一個(gè)類型為 int 的變量 x 地址為 0x100点楼,那么其對(duì)應(yīng)地址表達(dá)式&x的值為 0x100扫尖。且x的四個(gè)字節(jié)將被存儲(chǔ)在存儲(chǔ)器的 0x100, 0x101, 0x102, 0x103位置。


image.png

numpy.ndarray.byteswap()
numpy.ndarray.byteswap() 函數(shù)將 ndarray 中每個(gè)元素中的字節(jié)進(jìn)行大小端轉(zhuǎn)換掠廓。

NumPy 矩陣庫(kù)(Matrix)

NumPy 中包含了一個(gè)矩陣庫(kù) numpy.matlib换怖,該模塊中的函數(shù)返回的是一個(gè)矩陣,而不是 ndarray 對(duì)象蟀瞧。

matlib.empty()
matlib.empty() 函數(shù)返回一個(gè)新的矩陣沉颂,語(yǔ)法格式為:

numpy.matlib.empty(shape, dtype, order)

參數(shù)說(shuō)明:

shape: 定義新矩陣形狀的整數(shù)或整數(shù)元組
Dtype: 可選条摸,數(shù)據(jù)類型
order: C(行序優(yōu)先) 或者 F(列序優(yōu)先)

numpy.matlib.zeros()
numpy.matlib.zeros() 函數(shù)創(chuàng)建一個(gè)以 0 填充的矩陣。

numpy.matlib.ones()
numpy.matlib.ones()函數(shù)創(chuàng)建一個(gè)以 1 填充的矩陣铸屉。

numpy.matlib.eye()
numpy.matlib.eye() 函數(shù)返回一個(gè)矩陣钉蒲,對(duì)角線元素為 1,其他位置為零彻坛。

numpy.matlib.eye(n, M,k, dtype)

參數(shù)說(shuō)明:

n: 返回矩陣的行數(shù)
M: 返回矩陣的列數(shù)顷啼,默認(rèn)為 n
k: 對(duì)角線的索引
dtype: 數(shù)據(jù)類型

numpy.matlib.identity()
numpy.matlib.identity() 函數(shù)返回給定大小的單位矩陣。

單位矩陣是個(gè)方陣昌屉,從左上角到右下角的對(duì)角線(稱為主對(duì)角線)上的元素均為 1钙蒙,除此以外全都為 0。


image.png

numpy.matlib.rand()
numpy.matlib.rand() 函數(shù)創(chuàng)建一個(gè)給定大小的矩陣间驮,數(shù)據(jù)是隨機(jī)填充的躬厌。

NumPy 線性代數(shù)

image.png

numpy.dot()
numpy.dot() 對(duì)于兩個(gè)一維的數(shù)組,計(jì)算的是這兩個(gè)數(shù)組對(duì)應(yīng)下標(biāo)元素的乘積和(數(shù)學(xué)上稱之為內(nèi)積)竞帽;對(duì)于二維數(shù)組扛施,計(jì)算的是兩個(gè)數(shù)組的矩陣乘積;對(duì)于多維數(shù)組抢呆,它的通用計(jì)算公式如下煮嫌,即結(jié)果數(shù)組中的每個(gè)元素都是:數(shù)組a的最后一維上的所有元素與數(shù)組b的倒數(shù)第二位上的所有元素的乘積和: dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])。

numpy.dot(a, b, out=None) 

參數(shù)說(shuō)明:

a : ndarray 數(shù)組
b : ndarray 數(shù)組
out : ndarray, 可選抱虐,用來(lái)保存dot()的計(jì)算結(jié)果

numpy.vdot()
numpy.vdot() 函數(shù)是兩個(gè)向量的點(diǎn)積昌阿。 如果第一個(gè)參數(shù)是復(fù)數(shù),那么它的共軛復(fù)數(shù)會(huì)用于計(jì)算恳邀。 如果參數(shù)是多維數(shù)組懦冰,它會(huì)被展開(kāi)。

numpy.inner()
numpy.inner() 函數(shù)返回一維數(shù)組的向量?jī)?nèi)積谣沸。對(duì)于更高的維度刷钢,它返回最后一個(gè)軸上的和的乘積。

numpy.matmul
numpy.matmul 函數(shù)返回兩個(gè)數(shù)組的矩陣乘積乳附。 雖然它返回二維數(shù)組的正常乘積内地,但如果任一參數(shù)的維數(shù)大于2,則將其視為存在于最后兩個(gè)索引的矩陣的棧赋除,并進(jìn)行相應(yīng)廣播阱缓。

另一方面,如果任一參數(shù)是一維數(shù)組举农,則通過(guò)在其維度上附加 1 來(lái)將其提升為矩陣荆针,并在乘法之后被去除。

numpy.linalg.det()
numpy.linalg.det() 函數(shù)計(jì)算輸入矩陣的行列式。

行列式在線性代數(shù)中是非常有用的值航背。 它從方陣的對(duì)角元素計(jì)算喉悴。 對(duì)于 2×2 矩陣,它是左上和右下元素的乘積與其他兩個(gè)的乘積的差玖媚。

換句話說(shuō)箕肃,對(duì)于矩陣[[a,b]最盅,[c突雪,d]],行列式計(jì)算為 ad-bc涡贱。 較大的方陣被認(rèn)為是 2×2 矩陣的組合。

numpy.linalg.solve()
numpy.linalg.solve() 函數(shù)給出了矩陣形式的線性方程的解惹想。

考慮以下線性方程:

x + y + z = 6

2y + 5z = -4

2x + 5y - z = 27
可以使用矩陣表示為:


image.png

如果矩陣成為A问词、X和B,方程變?yōu)椋?/p>

AX = B

X = A^(-1)B

numpy.linalg.inv()
numpy.linalg.inv() 函數(shù)計(jì)算矩陣的乘法逆矩陣嘀粱。

逆矩陣(inverse matrix):設(shè)A是數(shù)域上的一個(gè)n階矩陣激挪,若在相同數(shù)域上存在另一個(gè)n階矩陣B,使得: AB=BA=E 锋叨,則我們稱B是A的逆矩陣垄分,而A則被稱為可逆矩陣。注:E為單位矩陣娃磺。

NumPy IO

Numpy 可以讀寫(xiě)磁盤(pán)上的文本數(shù)據(jù)或二進(jìn)制數(shù)據(jù)薄湿。

NumPy 為 ndarray 對(duì)象引入了一個(gè)簡(jiǎn)單的文件格式:npy。

npy 文件用于存儲(chǔ)重建 ndarray 所需的數(shù)據(jù)偷卧、圖形豺瘤、dtype 和其他信息。

常用的 IO 函數(shù)有:

  • load() 和 save() 函數(shù)是讀寫(xiě)文件數(shù)組數(shù)據(jù)的兩個(gè)主要函數(shù)听诸,默認(rèn)情況下坐求,數(shù)組是以未壓縮的原始二進(jìn)制格式保存在擴(kuò)展名為 .npy 的文件中。
  • savze() 函數(shù)用于將多個(gè)數(shù)組寫(xiě)入文件晌梨,默認(rèn)情況下桥嗤,數(shù)組是以未壓縮的原始二進(jìn)制格式保存在擴(kuò)展名為 .npz 的文件中。
  • loadtxt() 和 savetxt() 函數(shù)處理正常的文本文件(.txt 等)

numpy.save()
numpy.save() 函數(shù)將數(shù)組保存到以 .npy 為擴(kuò)展名的文件中仔蝌。

numpy.save(file, arr, allow_pickle=True, fix_imports=True)

參數(shù)說(shuō)明:

file:要保存的文件泛领,擴(kuò)展名為 .npy,如果文件路徑末尾沒(méi)有擴(kuò)展名 .npy掌逛,該擴(kuò)展名會(huì)被自動(dòng)加上师逸。
arr: 要保存的數(shù)組
allow_pickle: 可選,布爾值,允許使用 Python pickles 保存對(duì)象數(shù)組篓像,Python 中的 pickle 用于在保存到磁盤(pán)文件或從磁盤(pán)文件讀取之前动知,對(duì)對(duì)象進(jìn)行序列化和反序列化。
fix_imports: 可選员辩,為了方便 Pyhton2 中讀取 Python3 保存的數(shù)據(jù)盒粮。

np.savez
numpy.savez() 函數(shù)將多個(gè)數(shù)組保存到以 npz 為擴(kuò)展名的文件中。

numpy.savez(file, *args, **kwds)

參數(shù)說(shuō)明:

file:要保存的文件奠滑,擴(kuò)展名為 .npz丹皱,如果文件路徑末尾沒(méi)有擴(kuò)展名 .npz,該擴(kuò)展名會(huì)被自動(dòng)加上宋税。
args: 要保存的數(shù)組摊崭,可以使用關(guān)鍵字參數(shù)為數(shù)組起一個(gè)名字,非關(guān)鍵字參數(shù)傳遞的數(shù)組會(huì)自動(dòng)起名為 arr_0, arr_1, … 杰赛。
kwds: 要保存的數(shù)組使用關(guān)鍵字名稱呢簸。

savetxt()
savetxt() 函數(shù)是以簡(jiǎn)單的文本文件格式存儲(chǔ)數(shù)據(jù),對(duì)應(yīng)的使用 loadtxt() 函數(shù)來(lái)獲取數(shù)據(jù)乏屯。

np.loadtxt(FILENAME, dtype=int, delimiter=' ')
np.savetxt(FILENAME, a, fmt="%d", delimiter=",")

參數(shù) delimiter 可以指定各種分隔符根时、針對(duì)特定列的轉(zhuǎn)換器函數(shù)、需要跳過(guò)的行數(shù)等辰晕。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蛤迎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子含友,更是在濱河造成了極大的恐慌替裆,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唱较,死亡現(xiàn)場(chǎng)離奇詭異扎唾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)南缓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)胸遇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人汉形,你說(shuō)我怎么就攤上這事纸镊。” “怎么了概疆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵逗威,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我岔冀,道長(zhǎng)凯旭,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮罐呼,結(jié)果婚禮上鞠柄,老公的妹妹穿的比我還像新娘。我一直安慰自己嫉柴,他們只是感情好厌杜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著计螺,像睡著了一般夯尽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上登馒,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天匙握,我揣著相機(jī)與錄音,去河邊找鬼谊娇。 笑死肺孤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的济欢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼小渊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼法褥!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起酬屉,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤半等,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后呐萨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體杀饵,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年谬擦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了切距。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惨远,死狀恐怖谜悟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情北秽,我是刑警寧澤葡幸,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站贺氓,受9級(jí)特大地震影響蔚叨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一蔑水、第九天 我趴在偏房一處隱蔽的房頂上張望邢锯。 院中可真熱鬧,春花似錦肤粱、人聲如沸弹囚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鸥鹉。三九已至,卻和暖如春庶骄,著一層夾襖步出監(jiān)牢的瞬間毁渗,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工单刁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灸异,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓羔飞,卻偏偏與公主長(zhǎng)得像肺樟,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逻淌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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

  • 前言 numpy是支持 Python語(yǔ)言的數(shù)值計(jì)算擴(kuò)充庫(kù)么伯,其擁有強(qiáng)大的高維度數(shù)組處理與矩陣運(yùn)算能力。除此之外卡儒,nu...
    TensorFlow開(kāi)發(fā)者閱讀 3,212評(píng)論 0 35
  • 一田柔、numpy概述 numpy(Numerical Python)提供了python對(duì)多維數(shù)組對(duì)象的支持:ndar...
    L_steven的貓閱讀 3,470評(píng)論 1 24
  • 介紹 NumPy 是一個(gè) Python 包。 它代表 “Numeric Python”骨望。 它是一個(gè)由多維數(shù)組對(duì)象和...
    喔蕾喔蕾喔蕾蕾蕾閱讀 1,781評(píng)論 0 5
  • Numpy的組成與功能 Numpy(Numeric Python)可以被理解為一個(gè)用python實(shí)現(xiàn)的科學(xué)計(jì)算包,...
    不做大哥好多年閱讀 4,286評(píng)論 0 10
  • 先決條件 在閱讀這個(gè)教程之前硬爆,你多少需要知道點(diǎn)python。如果你想從新回憶下擎鸠,請(qǐng)看看Python Tutoria...
    舒map閱讀 2,580評(píng)論 1 13