0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Numpy數(shù)組的高級(jí)操作總結(jié)

數(shù)據(jù)分析與開(kāi)發(fā) ? 來(lái)源:CSDN技術(shù)社區(qū) ? 作者:逐夢(mèng)er ? 2022-05-13 12:53 ? 次閱讀

一. 數(shù)組上的迭代

NumPy 包含一個(gè)迭代器對(duì)象numpy.nditer。它是一個(gè)有效的多維迭代器對(duì)象,可以用于在數(shù)組上進(jìn)行迭代。數(shù)組的每個(gè)元素可使用 Python 的標(biāo)準(zhǔn)Iterator接口來(lái)訪問(wèn)。

importnumpyasnp
a=np.arange(0,60,5)
a=a.reshape(3,4)
print(a)
forxinnp.nditer(a):
print(x)
[[051015]
[20253035]
[40455055]]
0
5
10
15
20
25
30
35
40
45
50
55

如果兩個(gè)數(shù)組是可廣播的,nditer組合對(duì)象能夠同時(shí)迭代它們。假設(shè)數(shù) 組a具有維度 3X4,并且存在維度為 1X4 的另一個(gè)數(shù)組b,則使用以下類型的迭代器(數(shù)組b被廣播到a的大小)。

importnumpyasnp
a=np.arange(0,60,5)
a=a.reshape(3,4)
print(a)
b=np.array([1,2,3,4],dtype=int)
print(b)
forx,yinnp.nditer([a,b]):
print(x,y)
[[ 0  5 10 15]
 [20 25 30 35]
 [40 45 50 55]]
[1 2 3 4]
0 1
5 2
10 3
15 4
20 1
25 2
30 3
35 4
40 1
45 2
50 3
554

二.數(shù)組形狀修改函數(shù)

1.ndarray.reshape

函數(shù)在不改變數(shù)據(jù)的條件下修改形狀,參數(shù)如下:

ndarray.reshape(arr, newshape, order)

其中:

importnumpyasnp
a=np.arange(8)
print(a)
b=a.reshape(4,2)
print(b)

2.ndarray.flat

函數(shù)返回?cái)?shù)組上的一維迭代器,行為類似 Python 內(nèi)建的迭代器。

importnumpyasnp
a=np.arange(0,16,2).reshape(2,4)
print(a)
#返回展開(kāi)數(shù)組中的下標(biāo)的對(duì)應(yīng)元素
print(list(a.flat))
[[0246]
[8101214]]
[0,2,4,6,8,10,12,14]

3.ndarray.flatten

函數(shù)返回折疊為一維的數(shù)組副本,函數(shù)接受下列參數(shù):

ndarray.flatten(order)

其中:order:‘C’ — 按行,‘F’ — 按列,‘A’ — 原順序,‘k’ —元素在內(nèi)存中的出現(xiàn)順序。

importnumpyasnp
a=np.arange(8).reshape(2,4)
print(a)
#defaultiscolumn-major
print(a.flatten())
print(a.flatten(order='F'))
[[0123]
[4567]]
[01234567]
[04152637]

三.數(shù)組翻轉(zhuǎn)操作函數(shù)

1.numpy.transpose

函數(shù)翻轉(zhuǎn)給定數(shù)組的維度。如果可能的話它會(huì)返回一個(gè)視圖。函數(shù)接受下列參數(shù):

numpy.transpose(arr, axes)

其中:

? arr:要轉(zhuǎn)置的數(shù)組

? axes:整數(shù)的列表,對(duì)應(yīng)維度,通常所有維度都會(huì)翻轉(zhuǎn)。
importnumpyasnp
a=np.arange(24).reshape(2,3,4)
print(a)
b=np.array(np.transpose(a))
print(b)
print(b.shape)
[[[0123]
[4567]
[891011]]

[[12131415]
[16171819]
[20212223]]]
[[[012]
[416]
[820]]

[[113]
[517]
[921]]

[[214]
[618]
[1022]]

[[315]
[719]
[1123]]]
(4,3,2)
b=np.array(np.transpose(a,(1,0,2)))
print(b)
print(b.shape
[[[0123]
[12131415]]

[[4567]
[16171819]]

[[891011]
[20212223]]]
(3,2,4)

2. numpy.ndarray.T

該函數(shù)屬于ndarray類,行為類似于numpy.transpose.

importnumpyasnp
a=np.arange(12).reshape(3,4)
print(a)
print(a.T)
[[0123]
[4567]
[891011]]
[[048]
[159]
[2610]
[3711]]

3.numpy.swapaxes

函數(shù)交換數(shù)組的兩個(gè)軸。這個(gè)函數(shù)接受下列參數(shù):

– numpy.swapaxes(arr, axis1, axis2)

– 參數(shù):

? arr:要交換其軸的輸入數(shù)組

? axis1:對(duì)應(yīng)第一個(gè)軸的整數(shù)

? axis2:對(duì)應(yīng)第二個(gè)軸的整數(shù)
importnumpyasnp
a=np.arange(8).reshape(2,2,2)
print(a)
print(np.swapaxes(a,2,0))
[[[01]
[23]]

[[45]
[67]]]
[[[04]
[26]]

[[15]
[37]]]

4.numpy.rollaxis

s 函數(shù)向后滾動(dòng)特定的軸,直到一個(gè)特定位置。這個(gè)函數(shù)接受三個(gè)參數(shù):

– numpy.rollaxis(arr, axis, start)

– 其中:

? arr:輸入數(shù)組

? axis:要向后滾動(dòng)的軸,其它軸的相對(duì)位置不會(huì)改變

?start:默認(rèn)為零,表示完整的滾動(dòng)。會(huì)滾動(dòng)到特定位置。
importnumpyasnp
a=np.arange(8).reshape(2,2,2)
print(a)
print(np.rollaxis(a,2))
print(np.rollaxis(a,2,1))
[[[01]
[23]]

[[45]
[67]]]
[[[02]
[46]]

[[13]
[57]]]
[[[02]
[13]]

[[46]
[57]]]

四.數(shù)組修改維度函數(shù)

1.numpy.broadcast_to

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

– numpy.broadcast_to(array, shape, subok)

importnumpyasnp
a=np.arange(4).reshape(1,4)
print(a)
print(np.broadcast_to(a,(4,4)))
[[0123]]
[[0123]
[0123]
[0123]
[0123]]

2.numpy.expand_dims

函數(shù)通過(guò)在指定位置插入新的軸來(lái)擴(kuò)展數(shù)組形狀。該函數(shù)需要兩個(gè)參數(shù):

– numpy.expand_dims(arr, axis)

– 其中:

? arr:輸入數(shù)組
? axis:新軸插入的位置
importnumpyasnp
x=np.array(([1,2],[3,4]))
print(x)
y=np.expand_dims(x,axis=0)
print(y)
print(x.shape,y.shape)
y=np.expand_dims(x,axis=1)
print(y)
print(x.ndim,y.ndim)
print(x.shape,y.shape)
[[12]
[34]]
[[[12]
[34]]]
(2,2)(1,2,2)
[[[12]]

[[34]]]
23
(2,2)(2,1,2)

3.numpy.squeeze

函數(shù)從給定數(shù)組的形狀中刪除一維條目。此函數(shù)需要兩個(gè)參數(shù)。

– numpy.squeeze(arr, axis)

– 其中:

? arr:輸入數(shù)組

? axis:整數(shù)或整數(shù)元組,用于選擇形狀中單一維度條目的子集
importnumpyasnp
x=np.arange(9).reshape(1,3,3)
print(x)
y=np.squeeze(x)
print(y)
print(x.shape,y.shape)
[[[012]
[345]
[678]]]
[[012]
[345]
[678]]
(1,3,3)(3,3)

五.數(shù)組的連接操作

NumPy中數(shù)組的連接函數(shù)主要有如下四個(gè):

concatenate 沿著現(xiàn)存的軸連接數(shù)據(jù)序列

stack 沿著新軸連接數(shù)組序列

hstack 水平堆疊序列中的數(shù)組(列方向)

vstack 豎直堆疊序列中的數(shù)組(行方向)

1.numpy.stack

函數(shù)沿新軸連接數(shù)組序列,需要提供以下參數(shù):

– numpy.stack(arrays, axis)

– 其中:

? arrays:相同形狀的數(shù)組序列

? axis:返回?cái)?shù)組中的軸,輸入數(shù)組沿著它來(lái)堆疊
importnumpyasnp
a=np.array([[1,2],[3,4]])
print(a)
b=np.array([[5,6],[7,8]])
print(b)
print(np.stack((a,b),0))
print(np.stack((a,b),1))
[[12]
[34]]
[[56]
[78]]
[[[12]
[34]]

[[56]
[78]]]
[[[12]
[56]]

[[34]
[78]]]

2.numpy.hstack

是numpy.stack函數(shù)的變體,通過(guò)堆疊來(lái)生成水平的單個(gè)數(shù)組。

importnumpyasnp
a=np.array([[1,2],[3,4]])
print(a)
b=np.array([[5,6],[7,8]])
print(b)
print('水平堆疊:')
c=np.hstack((a,b))
print(c)
[[12]
[34]]
[[56]
[78]]
水平堆疊:
[[1256]
[3478]]

3.numpy.vstack

是numpy.stack函數(shù)的變體,通過(guò)堆疊來(lái)生成豎直的單個(gè)數(shù)組。

importnumpyasnp
a=np.array([[1,2],[3,4]])
print(a)
b=np.array([[5,6],[7,8]])
print(b)
print('豎直堆疊:')
c=np.vstack((a,b))
print(c)
[[12]
[34]]
[[56]
[78]]
豎直堆疊:
[[12]
[34]
[56]
[78]]

4.numpy.concatenate

函數(shù)用于沿指定軸連接相同形狀的兩個(gè)或多個(gè)數(shù)組。該函數(shù)接受以下參數(shù)。

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

– 其中:

? a1, a2, ...:相同類型的數(shù)組序列

? axis:沿著它連接數(shù)組的軸,默認(rèn)為0
importnumpyasnp
a=np.array([[1,2],[3,4]])
print(a)
b=np.array([[5,6],[7,8]])
print(b)
print(np.concatenate((a,b)))
print(np.concatenate((a,b),axis=1))
[[12]
[34]]
[[56]
[78]]
[[12]
[34]
[56]
[78]]
[[1256]
[3478]]

六.數(shù)組的分割操作

NumPy中數(shù)組的數(shù)組分割函數(shù)主要如下:

split將一個(gè)數(shù)組分割為多個(gè)子數(shù)組
–hsplit將一個(gè)數(shù)組水平分割為多個(gè)子數(shù)組(按列)
–vsplit將一個(gè)數(shù)組豎直分割為多個(gè)子數(shù)組(按行)

1.numpy.split

該函數(shù)沿特定的軸將數(shù)組分割為子數(shù)組。函數(shù)接受三個(gè)參數(shù):

– numpy.split(ary, indices_or_sections, axis)

? ary:被分割的輸入數(shù)組

? indices_or_sections:可以是整數(shù),表明要從輸入數(shù)組創(chuàng)建的,等大小的子數(shù)組的數(shù)量。如果此參數(shù)是一維數(shù)組,則其元素表明要?jiǎng)?chuàng)建新子數(shù)組的點(diǎn)。

? axis:默認(rèn)為0
importnumpyasnp
a=np.arange(9)
print(a)
print('將數(shù)組分為三個(gè)大小相等的子數(shù)組:')
b=np.split(a,3)
print(b)
print('將數(shù)組在一維數(shù)組中表明的位置分割:')
b=np.split(a,[4,7])
print(b)

2.numpy.hsplit

split()函數(shù)的特例,其中軸為 1 表示水平分割。

importnumpyasnp
a=np.arange(16).reshape(4,4)
print(a)
print('水平分割:')
b=np.hsplit(a,2)
print(b)
[[0123]
[4567]
[891011]
[12131415]]
水平分割:
[array([[0,1],
[4,5],
[8,9],
[12,13]]),array([[2,3],
[6,7],
[10,11],
[14,15]])]

3.numpy.vsplit

split()函數(shù)的特例,其中軸為 0 表示豎直分割,無(wú)論輸入數(shù)組的維度是什么。

importnumpyasnp
a=np.arange(16).reshape(4,4)
print(a)
print('豎直分割:')
b=np.vsplit(a,2)
print(b)
[[0123]
[4567]
[891011]
[12131415]]
豎直分割:
[array([[0,1,2,3],
[4,5,6,7]]),array([[8,9,10,11],
[12,13,14,15]])]

七.數(shù)組元素操作

NumPy中數(shù)組操作函數(shù)主要如下:

–resize返回指定形狀的新數(shù)組

–append將值添加到數(shù)組末尾

–insert沿指定軸將值插入到指定下標(biāo)之前

–delete返回刪掉某個(gè)軸的子數(shù)組的新數(shù)組

–unique尋找數(shù)組內(nèi)的唯一元素

1.numpy.resize

函數(shù)返回指定大小的新數(shù)組。如果新大小大于原始大小,則包含原始數(shù)組中的元素的重復(fù)副本。如果小于則去掉原始數(shù)組的部分?jǐn)?shù)據(jù)。該函數(shù)接受以下參數(shù):

– numpy.resize(arr, shape)

– 其中:

? arr:要修改大小的輸入數(shù)組
? shape:返回?cái)?shù)組的新形狀
importnumpyasnp
a=np.array([[1,2,3],[4,5,6]])
print(a)
print(a.shape)
b=np.resize(a,(3,2))
print(b)
print(b.shape)
print('修改第二個(gè)數(shù)組的大小:')
b=np.resize(a,(3,3))
print(b)
print('修改第三個(gè)數(shù)組的大?。?)
b=np.resize(a,(2,2))
print(b)
[[123]
[456]]
(2,3)
[[12]
[34]
[56]]
(3,2)
修改第二個(gè)數(shù)組的大小:
[[123]
[456]
[123]]
修改第三個(gè)數(shù)組的大?。?[[12]
[34]]

2.numpy.append

函數(shù)在輸入數(shù)組的末尾添加值。附加操作不是原地的,而是分配新的數(shù)組。此外,輸入數(shù)組的維度必須匹配否則將生成ValueError。函數(shù)接受下列函數(shù):

– numpy.append(arr, values, axis)

– 其中:

? arr:輸入數(shù)組
?values:要向arr添加的值,比如和arr形狀相同(除了要添加的軸)
? axis:沿著它完成操作的軸。如果沒(méi)有提供,兩個(gè)參數(shù)都會(huì)被展開(kāi)。
importnumpyasnp
a=np.array([[1,2,3],[4,5,6]])
print(a)
print(np.append(a,[[7,8,9]],axis=0))
print(np.append(a,[[5,5,5],[7,8,9]],axis=1))
[[123]
[456]]
[[123]
[456]
[789]]
[[123555]
[456789]]

3.numpy.insert

函數(shù)在給定索引之前,沿給定軸在輸入數(shù)組中插入值。如果值的類型轉(zhuǎn)換為要插入,則它與輸入數(shù)組不同。插入沒(méi)有原地的,函數(shù)會(huì)返回一個(gè)新數(shù)組。此外,如果未提供軸,則輸入數(shù)組會(huì)被展開(kāi)。

insert()函數(shù)接受以下參數(shù):

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

? arr:輸入數(shù)組
? obj:在其之前插入值的索引
?values:要插入的值
? axis:沿著它插入的軸
importnumpyasnp
a=np.array([[1,2],[3,4],[5,6]])
print(a)
print(np.insert(a,3,[11,12]))
print(np.insert(a,1,[11],axis=0))
print(np.insert(a,1,[11],axis=1))
[[12]
[34]
[56]]
[1231112456]
[[12]
[1111]
[34]
[56]]
[[1112]
[3114]
[5116]]

4.numpy.delete

函數(shù)返回從輸入數(shù)組中刪除指定子數(shù)組的新數(shù)組。與insert()函數(shù)的情況一樣,如果未提供軸參數(shù),則輸入數(shù)組將展開(kāi)。該函 數(shù)接受以下參數(shù):

– Numpy.delete(arr, obj, axis)

? arr:輸入數(shù)組
? obj:可以被切片,整數(shù)或者整數(shù)數(shù)組,表明要從輸入數(shù)組刪除的子數(shù)組
? axis:沿著它刪除給定子數(shù)組的軸
importnumpyasnp
a=np.array([[1,2],[3,4],[5,6]])
print(a)
print(np.delete(a,5))
print(np.delete(a,1,axis=1))
[[12]
[34]
[56]]
[12345]
[[1]
[3]
[5]]

5.numpy.unique

函數(shù)返回輸入數(shù)組中的去重元素?cái)?shù)組。該函數(shù)能夠返回一個(gè)元組,包含去重?cái)?shù)組和相關(guān)索引的數(shù)組。索引的性質(zhì)取決于函數(shù)調(diào)用中返回參數(shù)的類型。

– numpy.unique(arr, return_index, return_inverse, return_counts)

? arr:輸入數(shù)組,如果不是一維數(shù)組則會(huì)展開(kāi)
? return_index:如果為true,返回輸入數(shù)組中的元素下標(biāo)
? return_inverse:如果為true,返回去重?cái)?shù)組的下標(biāo),它可以用于重構(gòu)輸入數(shù)組
? return_counts:如果為true,返回去重?cái)?shù)組中的元素在原數(shù)組中的出現(xiàn)次數(shù)
importnumpyasnp
a=np.array([5,2,6,2,7,5,6,8,2,9])
u=np.unique(a)
print(u)
u,indices=np.unique(a,return_index=True)
print(u,indices)
u,indices=np.unique(a,return_inverse=True)
print(u,indices)
u,indices=np.unique(a,return_counts=True)
print(u,indices)
[256789]
[256789][102479]
[256789][1020312405]
[256789][322111]

八.NumPy - 字符串函數(shù)

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

4b502d98-d274-11ec-bce3-dac502259ad0.png
importnumpyasnp
print(np.char.add(['hello'],['xyz']))
print(np.char.add(['hello','hi'],['abc','xyz']))
print(np.char.multiply('Hello',3))
print(np.char.center('hello',20,fillchar='*'))
print(np.char.capitalize('helloworld'))
print(np.char.title('hellohowareyou?'))
print(np.char.lower(['HELLO','WORLD']))
print(np.char.lower('HELLO'))
print(np.char.upper('hello'))
print(np.char.upper(['hello','world']))
print(np.char.split('hellohowareyou?'))
print(np.char.split('YiibaiPoint,Hyderabad,Telangana',sep=','))
print(np.char.splitlines('hello
howareyou?'))
print(np.char.splitlines('hello
howareyou?'))
print(np.char.strip('ashokarora','a'))
print(np.char.strip(['arora','admin','java'],'a'))
print(np.char.join(':','dmy'))
print(np.char.join([':','-'],['dmy','ymd']))
print(np.char.replace('Heisagoodboy','is','was'))
a=np.char.encode('hello','cp500')
print(a)
print(np.char.decode(a,'cp500'))
['helloxyz']
['helloabc''hixyz']
HelloHelloHello
*******hello********
Helloworld
HelloHowAreYou?
['hello''world']
hello
HELLO
['HELLO''WORLD']
['hello','how','are','you?']
['YiibaiPoint','Hyderabad','Telangana']
['hello','howareyou?']
['hello','howareyou?']
shokaror
['ror''dmin''jav']
dy
['dy''y-m-d']
Hewasagoodboy
b'x88x85x93x93x96'
hello

九.NumPy - 算數(shù)函數(shù)

NumPy 包含大量的各種數(shù)學(xué)運(yùn)算功能。NumPy 提供標(biāo)準(zhǔn)的三角函數(shù),算術(shù)運(yùn)算的函數(shù),復(fù)數(shù)處理函數(shù)等。

– 三角函數(shù)
– 舍入函數(shù)
–算數(shù)函數(shù)

1. NumPy -三角函數(shù)

NumPy 擁有標(biāo)準(zhǔn)的三角函數(shù),它為弧度制單位的給定角度返回三角函數(shù)比值。arcsin,arccos,和arctan函數(shù)返回給定角度的sin,cos和tan的反三角函數(shù)。

這些函數(shù)的結(jié)果可以通過(guò)numpy.degrees()函數(shù)通過(guò)將弧度制 轉(zhuǎn)換為角度制來(lái)驗(yàn)證。

importnumpyasnp
a=np.array([0,30,45,60,90])
#通過(guò)乘pi/180轉(zhuǎn)化為弧度
print(np.sin(a*np.pi/180))
print(np.cos(a*np.pi/180))
print(np.tan(a*np.pi/180))
[0.0.50.707106780.86602541.]
[1.00000000e+008.66025404e-017.07106781e-015.00000000e-01
6.12323400e-17]
[0.00000000e+005.77350269e-011.00000000e+001.73205081e+00
1.63312394e+16]

2.NumPy -舍入函數(shù)

? numpy.around()這個(gè)函數(shù)返回四舍五入到所需精度的值

numpy.around(a,decimals)–a輸入數(shù)組
–decimals要舍入的小數(shù)位數(shù)。默認(rèn)值為0。如果為負(fù),整數(shù)將四舍五入到小數(shù)點(diǎn)左側(cè)的位置

? numpy.floor() 函數(shù)返回不大于輸入?yún)?shù)的最大整數(shù)。? numpy.ceil() 函數(shù)返回輸入值的上限,大于輸入?yún)?shù)的最小整數(shù)。

importnumpyasnp
a=np.array([1.0,5.55,123,0.567,25.532])
print(np.around(a))
print(np.around(a,decimals=1))
print(np.floor(a))
print(np.ceil(a))
[1.6.123.1.26.]
[1.5.6123.0.625.5]
[1.5.123.0.25.]
[1.6.123.1.26.]

3.NumPy - 算數(shù)運(yùn)算

用于執(zhí)行算術(shù)運(yùn)算(如add(),subtract(),multiply()和divide())的輸入數(shù)組必須具有相同的形狀或符合數(shù)組廣播規(guī)則。

numpy.reciprocal()函數(shù)返回參數(shù)逐元素的倒數(shù)。
–numpy.power()函數(shù)將第一個(gè)輸入數(shù)組中的元素作為底數(shù),計(jì)算它與第二個(gè)輸入數(shù)組中相應(yīng)元素的冪。
–numpy.mod()函數(shù)返回輸入數(shù)組中相應(yīng)元素的除法余數(shù)。
importnumpyasnp
a=np.array([0.25,2,1,0.2,100])
print(np.reciprocal(a))
print(np.power(a,2))
a=np.array([10,20,30])
b=np.array([3,5,7])
print(np.mod(a,b))
[4.0.51.5.0.01]
[6.25000000e-024.00000000e+001.00000000e+004.00000000e-02
1.00000000e+04]
[102]

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

NumPy 有很多有用的統(tǒng)計(jì)函數(shù),用于從數(shù)組中給定的元素中查找最小,最大,百分標(biāo)準(zhǔn)差和方差等。

numpy.amin(),numpy.amax()從給定數(shù)組中的元素沿指定軸返回最小值和最大值。
–numpy.ptp()函數(shù)返回沿軸的值的范圍(最大值-最小值)。
–numpy.percentile()表示小于這個(gè)值得觀察值占某個(gè)百分比
?numpy.percentile(a,q,axis)
?a輸入數(shù)組;q要計(jì)算的百分位數(shù),在0~100之間;axis沿著它計(jì)算百分位數(shù)的軸
–numpy.median()返回?cái)?shù)據(jù)樣本的中位數(shù)。
–numpy.mean()沿軸返回?cái)?shù)組中元素的算術(shù)平均值。
–numpy.average()返回由每個(gè)分量乘以反映其重要性的因子得到的加權(quán)平均值
importnumpyasnp
a=np.array([[3,7,5],[8,4,3],[2,4,9]])
print(np.amin(a,1))
print(np.amax(a,1))
print(np.ptp(a))
print(np.percentile(a,50))
print(np.median(a))
print(np.mean(a))
print(np.average(a))
print(np.std([1,2,3,4]))#返回?cái)?shù)組標(biāo)準(zhǔn)差
print(np.var([1,2,3,4]))#返回?cái)?shù)組方差
[332]
[789]
7
4.0
4.0
5.0
5.0
1.11803398875
1.25

十.NumPy排序、搜索和計(jì)數(shù)函數(shù)

NumPy中提供了各種排序相關(guān)功能。

–numpy.sort函數(shù)返回輸入數(shù)組的排序副本。numpy.sort(a,axis,kind,order)
?a要排序的數(shù)組;
?axis沿著它排序數(shù)組的軸,如果沒(méi)有數(shù)組會(huì)被展開(kāi),沿著最后的軸排序;?kind默認(rèn)為'quicksort'(快速排序);
?order如果數(shù)組包含字段,則是要排序的字段
– numpy.argsort()函數(shù)對(duì)輸入數(shù)組沿給定軸執(zhí)行間接排序,并使用指定排序類型返回?cái)?shù)據(jù)的索引數(shù)組。這個(gè)索引數(shù)組用于構(gòu)造排序后的數(shù)組。
– numpy.lexsort()函數(shù)使用鍵序列執(zhí)行間接排序。鍵可以看作是電子表格中的一列。該函數(shù)返回一個(gè)索引數(shù)組,使用它可以獲得排序數(shù)據(jù)。注意,最后一個(gè)鍵恰好是sort的主鍵。
– numpy.argmax()和 numpy.argmin()這兩個(gè)函數(shù)分別沿給定軸返回最大和最小元素的索引。
– numpy.nonzero()函數(shù)返回輸入數(shù)組中非零元素的索引。
–numpy.where()函數(shù)返回輸入數(shù)組中滿足給定條件的元素的索引。
– numpy.extract()函數(shù)返回滿足任何條件的元素。
importnumpyasnp
a=np.array([[3,7,3,1],[9,7,8,7]])
print(np.sort(a))
print(np.argsort(a))
print(np.argmax(a))
print(np.argmin(a))
print(np.nonzero(a))
print(np.where(a>3))
nm=('raju','anil','ravi','amar')
dv=('f.y.','s.y.','s.y.','f.y.')
print(np.lexsort((dv,nm)))
[[1337]
[7789]]
[[3021]
[1320]]
4
3
(array([0,0,0,0,1,1,1,1],dtype=int64),array([0,1,2,3,0,1,2,3],dtype=int64))
(array([0,1,1,1,1],dtype=int64),array([1,0,1,2,3],dtype=int64))
[3102]

十一.NumPy IO文件操作

ndarray對(duì)象可以保存到磁盤文件并從磁盤文件加載??捎玫?IO 功能有:

numpy.save()文件將輸入數(shù)組存儲(chǔ)在具有npy擴(kuò)展名的磁盤文件中。
–numpy.load()從npy文件中重建數(shù)組。
–numpy.savetxt()和numpy.loadtxt()函數(shù)以簡(jiǎn)單文本文件格式存儲(chǔ)和獲取數(shù)組數(shù)據(jù)。
importnumpyasnp
a=np.array([1,2,3,4,5])
np.save('outfile',a)
b=np.load('outfile.npy')
print(b)
a=np.array([1,2,3,4,5])
np.savetxt('out.txt',a)
b=np.loadtxt('out.txt')
print(b)
[12345]
[1.2.3.4.5.]

原文標(biāo)題:這 11 種 Numpy 高級(jí)操作你都會(huì)嗎?

文章出處:【微信公眾號(hào):數(shù)據(jù)分析與開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4262

    瀏覽量

    62233
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4759

    瀏覽量

    84294
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    412

    瀏覽量

    25858
  • 迭代器
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    4294

原文標(biāo)題:這 11 種 Numpy 高級(jí)操作你都會(huì)嗎?

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是NumPy?選擇NUMPY的原因及其工作原理是什么

    NumPy 是一個(gè)免費(fèi)的 Python 編程語(yǔ)言開(kāi)源庫(kù),它功能強(qiáng)大、已經(jīng)過(guò)充分優(yōu)化,并增加了對(duì)大型多維數(shù)組(也稱為矩陣或張量)的支持。
    的頭像 發(fā)表于 07-15 09:37 ?3794次閱讀

    numpy數(shù)組的基本用法

    numpy提供了一種數(shù)據(jù)類型,提供了數(shù)據(jù)分析的運(yùn)算基礎(chǔ),安裝方式
    發(fā)表于 09-04 16:24 ?1232次閱讀
    <b class='flag-5'>numpy</b><b class='flag-5'>數(shù)組</b>的基本用法

    Numpy的學(xué)習(xí)總結(jié)

    Numpy學(xué)習(xí)筆記
    發(fā)表于 07-16 08:27

    淺析在one-yolov5項(xiàng)目中計(jì)算mAP用到的一些numpy操作

    引言本文主要介紹在 one-yolov5 項(xiàng)目中 計(jì)算mAP用到的一些numpy操作,這些numpy操作使用在 utils/metrics.py 中。用到的
    發(fā)表于 11-24 15:04

    MATLAB數(shù)組操作

    matlab是靠它靈活數(shù)組操作發(fā)的家,但是數(shù)組操作也是初學(xué)者最難理解的matlab特色之一,因?yàn)樵谄渌Z(yǔ)言中(如C、pascal)不存在對(duì)等的語(yǔ)法和語(yǔ)義。在5.x版中新增添的多維
    發(fā)表于 05-28 15:38 ?0次下載

    Python中NumPy擴(kuò)展包簡(jiǎn)介及案例詳解

    NumPy是Python語(yǔ)言的一個(gè)擴(kuò)展包。支持多維數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。NumPy提供了與Matlab相似的功能與
    發(fā)表于 11-15 12:31 ?1977次閱讀

    基于python的numpy深度解析

    numpy(Numerical Python)提供了python對(duì)多維數(shù)組對(duì)象的支持:ndarray,具有矢量運(yùn)算能力,快速、節(jié)省空間。numpy支持高級(jí)大量的維度
    的頭像 發(fā)表于 01-24 13:55 ?5191次閱讀
    基于python的<b class='flag-5'>numpy</b>深度解析

    圖解NumPy的核心概念:向量、矩陣、3維及更高維數(shù)組

    。同時(shí),在、、等深度許欸小框架中,了解numpy將顯著提高數(shù)據(jù)共享和處理能力,甚至無(wú)需過(guò)多更改就可以在運(yùn)行計(jì)算。 n維數(shù)組NumPy的核心概念,這樣的好處,盡管一維和而為數(shù)組的處理方
    的頭像 發(fā)表于 02-11 10:01 ?5964次閱讀
    圖解<b class='flag-5'>NumPy</b>的核心概念:向量、矩陣、3維及更高維<b class='flag-5'>數(shù)組</b>

    圖文詳解NumPy看這一篇就夠了

    寫下來(lái),讓學(xué)習(xí)過(guò)程變得輕松有趣。在Reddit機(jī)器學(xué)習(xí)社區(qū)發(fā)布不到半天就收獲了500+贊。 下面就讓我們跟隨他的教程一起來(lái)學(xué)習(xí)吧! 教程內(nèi)容分為向量?(一維數(shù)組)、矩陣?(二維數(shù)組)、三維與更高維數(shù)組3個(gè)部分。
    的頭像 發(fā)表于 05-26 09:45 ?3203次閱讀
    圖文詳解<b class='flag-5'>NumPy</b>看這一篇就夠了

    Numpy詳解-軸的概念

    NumPy數(shù)組的維數(shù)稱為秩(rank),一維數(shù)組的秩為1,二維數(shù)組的秩為2,以此類推。在NumPy中,每一個(gè)線性的
    的頭像 發(fā)表于 04-25 10:25 ?2827次閱讀

    Python編程語(yǔ)言開(kāi)源庫(kù)NUMPY的工作原理及優(yōu)勢(shì)

    NumPy 是一個(gè)免費(fèi)的 Python 編程語(yǔ)言開(kāi)源庫(kù),它功能強(qiáng)大、已經(jīng)過(guò)充分優(yōu)化,并增加了對(duì)大型多維數(shù)組(也稱為矩陣或張量)的支持。NumPy 還提供了一系列高級(jí)數(shù)學(xué)函數(shù),可與這些
    的頭像 發(fā)表于 07-15 09:35 ?1690次閱讀

    一文詳解Numpy高級(jí)操作

    NumPy 包含一個(gè)迭代器對(duì)象numpy.nditer。它是一個(gè)有效的多維迭代器對(duì)象,可以用于在數(shù)組上進(jìn)行迭代。數(shù)組的每個(gè)元素可使用 Python 的標(biāo)準(zhǔn)Iterator接口來(lái)訪問(wèn)。
    的頭像 發(fā)表于 07-19 09:57 ?1087次閱讀

    這8個(gè)NumPy函數(shù)可以解決90%的常見(jiàn)問(wèn)題

    Numpy快速而高效的原因是底層的C代碼,這比使用Python進(jìn)行數(shù)組操作要快上幾百倍,并且隨著數(shù)據(jù)量級(jí)的上升而上升。
    的頭像 發(fā)表于 06-01 17:42 ?576次閱讀

    Numpy基礎(chǔ)之數(shù)組過(guò)濾功能介紹

    numpy中,數(shù)組可以看作是一系列數(shù)值的有序集合,可以通過(guò)下標(biāo)訪問(wèn)其中的元素。 處理數(shù)組的過(guò)程中,經(jīng)常需要用到數(shù)組過(guò)濾功能。
    的頭像 發(fā)表于 08-09 16:28 ?435次閱讀

    List和Numpy Array有什么區(qū)別

    Numpy 是Python科學(xué)計(jì)算的一個(gè)核心模塊。它提供了非常高效的數(shù)組對(duì)象,以及用于處理這些數(shù)組對(duì)象的工具。一個(gè)Numpy數(shù)組由許多值組成
    的頭像 發(fā)表于 10-30 10:49 ?768次閱讀
    List和<b class='flag-5'>Numpy</b> Array有什么區(qū)別