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):
跨度可以是負(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)
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è)唯一定義它的字符代碼,如下:
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ì)象屬性有:
ndarray.flags 返回 ndarray 對(duì)象的內(nèi)存信息慎王,包含以下屬性:
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')
numpy.zeros
創(chuàng)建指定大小的數(shù)組蜀漆,數(shù)組元素以 0 來(lái)填充:
numpy.zeros(shape, dtype = float, order = 'C')
numpy.ones
創(chuàng)建指定形狀的數(shù)組,數(shù)組元素以 1 來(lái)填充:
numpy.ones(shape, dtype = None, order = 'C')
NumPy 從已有的數(shù)組創(chuàng)建數(shù)組
numpy.asarray
numpy.asarray 類似 numpy.array咱旱,但 numpy.asarray 只有三個(gè)确丢,比 numpy.array 少兩個(gè)。
numpy.asarray(a, dtype = None, order = None)
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。
numpy.fromiter
numpy.fromiter 方法從可迭代對(duì)象中建立 ndarray 對(duì)象狐粱,返回一維數(shù)組舀寓。
numpy.fromiter(iterable, dtype, count=-1)
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互墓。
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)
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)。
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]]
廣播的規(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ù)巡语,它可以接受下列值:
廣播迭代
如果兩個(gè)數(shù)組是可廣播的翎蹈,nditer 組合對(duì)象能夠同時(shí)迭代它們。 假設(shè)數(shù)組 a 的維度為 3X4捌臊,數(shù)組 b 的維度為 1X4 杨蛋,則使用以下迭代器(數(shù)組 b 被廣播到 a 的大小)。
Numpy 數(shù)組操作
修改數(shù)組形狀
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ù)組
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ù)組維度
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ù)組
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ù)組
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ù)組元素的添加與刪除
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ù):
NumPy 字符串函數(shù)
以下函數(shù)用于對(duì) dtype 為 numpy.string_ 或 numpy.unicode_ 的數(shù)組執(zhí)行向量化字符串操作。 它們基于 Python 內(nèi)置庫(kù)中的標(biāo)準(zhǔn)字符串函數(shù)惶凝。
這些函數(shù)在字符數(shù)組類(numpy.char)中定義吼虎。
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)定性。 下表顯示了三種排序算法的比較伊诵。
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
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位置。
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。
numpy.matlib.rand()
numpy.matlib.rand() 函數(shù)創(chuàng)建一個(gè)給定大小的矩陣间驮,數(shù)據(jù)是隨機(jī)填充的躬厌。
NumPy 線性代數(shù)
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
可以使用矩陣表示為:
如果矩陣成為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ù)等辰晕。