欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中11種NumPy高級(jí)操作總結(jié)

 更新時(shí)間:2022年05月09日 16:39:56   作者:逐夢(mèng)er  
熬夜整了了11種Numpy的高級(jí)操作,每一種都有參數(shù)解釋與小例子輔助說(shuō)明。文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧

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

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

import?numpy?as?np
a?=?np.arange(0,?60,?5)
a?=?a.reshape(3,?4)
print(a)
for?x?in?np.nditer(a):
????print(x)

輸出結(jié)果:

 [[ 0  5 10 15]
 [20 25 30 35]
 [40 45 50 55]]
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的大小)。

import?numpy?as?np
a?=?np.arange(0,?60,?5)
a?=?a.reshape(3,?4)
print(a)
b?=?np.array([1,?2,?3,?4],?dtype=int)
print(b)
for?x,?y?in?np.nditer([a,?b]):
????print(x,?y)

輸出結(jié)果: 

[[ 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
55 4

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

1.ndarray.reshape

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

ndarray.reshape(arr, newshape, order)

import?numpy?as?np
a?=?np.arange(8)
print(a)
b?=?a.reshape(4,?2)
print(b)

輸出結(jié)果:

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

2.ndarray.flat

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

import?numpy?as?np
a?=?np.arange(0,?16,?2).reshape(2,?4)
print(a)
#?返回展開(kāi)數(shù)組中的下標(biāo)的對(duì)應(yīng)元素
print(list(a.flat))

輸出結(jié)果: 

[[ 0  2  4  6]
 [ 8 10 12 14]]
[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)順序。

import?numpy?as?np
a?=?np.arange(8).reshape(2,?4)
print(a)
#?default?is?column-major
print(a.flatten())
print(a.flatten(order='F'))

輸出結(jié)果:

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

3.數(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)。

import?numpy?as?np
a?=?np.arange(24).reshape(2,?3,?4)
print(a)
b?=?np.array(np.transpose(a))
print(b)
print(b.shape)

輸出結(jié)果:

[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
[[[ 0 12]
  [ 4 16]
  [ 8 20]]

 [[ 1 13]
  [ 5 17]
  [ 9 21]]

 [[ 2 14]
  [ 6 18]
  [10 22]]

 [[ 3 15]
  [ 7 19]
  [11 23]]]
(4, 3, 2)

b?=?np.array(np.transpose(a,?(1,?0,?2)))
print(b)
print(b.shape

輸出結(jié)果:

[[[ 0  1  2  3]
  [12 13 14 15]]

 [[ 4  5  6  7]
  [16 17 18 19]]

 [[ 8  9 10 11]
  [20 21 22 23]]]
(3, 2, 4)

2. numpy.ndarray.T

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

import?numpy?as?np
a?=?np.arange(12).reshape(3,?4)
print(a)
print(a.T)

輸出結(jié)果:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[[ 0  4  8]
 [ 1  5  9]
 [ 2  6 10]
 [ 3  7 11]] 

3.numpy.swapaxes

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

numpy.swapaxes(arr, axis1, axis2)

其中:

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

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

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

import?numpy?as?np
a?=?np.arange(8).reshape(2,?2,?2)
print(a)
print(np.swapaxes(a,?2,?0))

輸出結(jié)果:

[[[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]
[[[0 4]
  [2 6]]

 [[1 5]
  [3 7]]]

4.numpy.rollaxis

numpy.rollaxis() 函數(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)到特定位置。

import?numpy?as?np
a?=?np.arange(8).reshape(2,2,2)
print(a)
print(np.rollaxis(a,2))
print(np.rollaxis(a,2,1))

輸出結(jié)果:

[[[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]
[[[0 2]
  [4 6]]

 [[1 3]
  [5 7]]]
[[[0 2]
  [1 3]]

 [[4 6]
  [5 7]]]

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

1.numpy.broadcast_to

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

numpy.broadcast_to(array, shape, subok)

import?numpy?as?np
a?=?np.arange(4).reshape(1,4)
print(a)
print(np.broadcast_to(a,(4,4)))

輸出結(jié)果:

[[0 1 2 3]]
[[0 1 2 3]
 [0 1 2 3]
 [0 1 2 3]
 [0 1 2 3]] 

2.numpy.expand_dims

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

numpy.expand_dims(arr, axis)

其中:

arr:輸入數(shù)組

axis:新軸插入的位置

import?numpy?as?np
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)

輸出結(jié)果: 

[[1 2]
 [3 4]]
[[[1 2]
  [3 4]]]
(2, 2) (1, 2, 2)
[[[1 2]]

 [[3 4]]]
2 3
(2, 2) (2, 1, 2)

3.numpy.squeeze

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

numpy.squeeze(arr, axis)

其中:

arr:輸入數(shù)組

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

import?numpy?as?np
x?=?np.arange(9).reshape(1,?3,?3)
print(x)
y?=?np.squeeze(x)
print(y)
print(x.shape,?y.shape)

輸出結(jié)果: 

[[[0 1 2]
  [3 4 5]
  [6 7 8]]]
[[0 1 2]
 [3 4 5]
 [6 7 8]]
(1, 3, 3) (3, 3)

5.數(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)堆疊
import?numpy?as?np
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))

輸出結(jié)果: 

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

 [[5 6]
  [7 8]]]
[[[1 2]
  [5 6]]

 [[3 4]
  [7 8]]]

2.numpy.hstack

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

import?numpy?as?np
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)

輸出結(jié)果: 

[[1 2]
 [3 4]]
[[5 6]
 [7 8]]
水平堆疊:
[[1 2 5 6]
 [3 4 7 8]]

3.numpy.vstack

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

import?numpy?as?np
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)

輸出結(jié)果:

[[1 2]
 [3 4]]
[[5 6]
 [7 8]]
豎直堆疊:
[[1 2]
 [3 4]
 [5 6]
 [7 8]] 

4.numpy.concatenate

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

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

其中:

  • a1, a2, ...:相同類型的數(shù)組序列
  • axis:沿著它連接數(shù)組的軸,默認(rèn)為 0
import?numpy?as?np
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))

 輸出結(jié)果:

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

6.數(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
import?numpy?as?np
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)

輸出結(jié)果:

[0 1 2 3 4 5 6 7 8]
將數(shù)組分為三個(gè)大小相等的子數(shù)組:
[array([0, 1, 2]), 
array([3, 4, 5]), 
array([6, 7, 8])]
將數(shù)組在一維數(shù)組中表明的位置分割:
[array([0, 1, 2, 3]), 
array([4, 5, 6]), 
array([7, 8])] 

2.numpy.hsplit

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

import?numpy?as?np
a?=?np.arange(16).reshape(4,4)
print(a)
print('水平分割:')
b?=?np.hsplit(a,2)
print(b)

輸出結(jié)果: 

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
水平分割:
[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ù)組的維度是什么。

import?numpy?as?np
a?=?np.arange(16).reshape(4,4)
print(a)
print('豎直分割:')
b?=?np.vsplit(a,2)
print(b)

 輸出結(jié)果:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
豎直分割:
[array([[0, 1, 2, 3],
       [4, 5, 6, 7]]),
 array([[ 8,  9, 10, 11],
       [12, 13, 14, 15]])]

7.數(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ù)組的新形狀
import?numpy?as?np
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)

輸出結(jié)果: 

[[1 2 3]
 [4 5 6]]
(2, 3)
[[1 2]
 [3 4]
 [5 6]]
(3, 2)
修改第二個(gè)數(shù)組的大?。?br />[[1 2 3]
 [4 5 6]
 [1 2 3]]
修改第三個(gè)數(shù)組的大?。?br />[[1 2]
 [3 4]]

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)。
import?numpy?as?np
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))

 輸出結(jié)果:

[[1 2 3]
 [4 5 6]]
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[1 2 3 5 5 5]
 [4 5 6 7 8 9]]

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:沿著它插入的軸
import?numpy?as?np
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))

 輸出結(jié)果:

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

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ù)組的軸
import?numpy?as?np
a?=?np.array([[1,2],[3,4],[5,6]])
print(a)
print(np.delete(a,5))
print(np.delete(a,1,axis?=?1))

輸出結(jié)果: 

[[1 2]
 [3 4]
 [5 6]]
[1 2 3 4 5]
[[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ù)

import?numpy?as?np
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)

輸出結(jié)果: 

[2 5 6 7 8 9][2 5 6 7 8 9] 
[1 0 2 4 7 9][2 5 6 7 8 9] 
[1 0 2 0 3 1 2 4 0 5][2 5 6 7 8 9] 
[3 2 2 1 1 1]

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

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

import?numpy?as?np
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('hello?world'))
print(np.char.title('hello?how?are?you?'))
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?('hello?how?are?you?'))
print(np.char.split?('YiibaiPoint,Hyderabad,Telangana',?sep?=?','))
print(np.char.splitlines('hello\nhow?are?you?'))
print(np.char.splitlines('hello\rhow?are?you?'))
print(np.char.strip('ashok?arora','a'))
print(np.char.strip(['arora','admin','java'],'a'))
print(np.char.join(':','dmy'))
print(np.char.join([':','-'],['dmy','ymd']))
print(np.char.replace?('He?is?a?good?boy',?'is',?'was'))
a?=?np.char.encode('hello',?'cp500')
print(a)
print(np.char.decode(a,'cp500'))

輸出結(jié)果: 

['hello xyz']
['hello abc' 'hi xyz']
Hello Hello Hello 
*******hello********
Hello world
Hello How Are You?
['hello' 'world']
hello
HELLO
['HELLO' 'WORLD']
['hello', 'how', 'are', 'you?']
['YiibaiPoint', 'Hyderabad', 'Telangana']
['hello', 'how are you?']
['hello', 'how are you?']
shok aror
['ror' 'dmin' 'jav']
d:m:y
['d:m:y' 'y-m-d']
He was a good boy
b'\x88\x85\x93\x93\x96'
hello

9.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)證。

import?numpy?as?np
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))

輸出結(jié)果: 

[ 0.          0.5         0.70710678  0.8660254   1.        ]
[  1.00000000e+00   8.66025404e-01   7.07106781e-01   5.00000000e-01
   6.12323400e-17]
[  0.00000000e+00   5.77350269e-01   1.00000000e+00   1.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ù)

import?numpy?as?np
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))

輸出結(jié)果:

[   1.    6.  123.    1.   26.]
[   1.     5.6  123.     0.6   25.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ù)
import?numpy?as?np
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))

輸出結(jié)果: 

[ 4.    0.5   1.    5.    0.01]
[  6.25000000e-02   4.00000000e+00   1.00000000e+00
   4.00000000e-02.  1.00000000e+04]
[1 0 2]

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)平均值

import?numpy?as?np
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ù)組方差

輸出結(jié)果: 

[3 3 2]
[7 8 9]
7
4.0
4.0
5.0
5.0
1.11803398875
1.25

10.排序、搜索和計(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ù)返回滿足任何條件的元素。

import?numpy?as?np
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)))

輸出結(jié)果: 

[[1 3 3 7]
 [7 7 8 9]]
[[3 0 2 1]
 [1 3 2 0]]
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))
[3 1 0 2]

11.IO文件操作

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

  • numpy.save() 文件將輸入數(shù)組存儲(chǔ)在具有npy擴(kuò)展名的磁盤(pán)文件中。
  • numpy.load() 從npy文件中重建數(shù)組。
  • numpy.savetxt()和numpy.loadtxt() 函數(shù)以簡(jiǎn)單文本文件格式存儲(chǔ)和獲取數(shù)組數(shù)據(jù)。
import?numpy?as?np
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)

 輸出結(jié)果:

[1 2 3 4 5]
[ 1.  2.  3.  4.  5.]

以上就是Python中11種NumPy高級(jí)操作總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Python NumPy操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Pycharm遠(yuǎn)程調(diào)試openstack的方法

    Pycharm遠(yuǎn)程調(diào)試openstack的方法

    這篇文章主要為大家詳細(xì)介紹了Pycharm遠(yuǎn)程調(diào)試openstack的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • python語(yǔ)音信號(hào)處理詳細(xì)教程

    python語(yǔ)音信號(hào)處理詳細(xì)教程

    在深度學(xué)習(xí)中,語(yǔ)音的輸入都是需要處理的,下面這篇文章主要給大家介紹了關(guān)于python語(yǔ)音信號(hào)處理的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • 基于web管理OpenVPN服務(wù)的安裝使用詳解

    基于web管理OpenVPN服務(wù)的安裝使用詳解

    這篇文章主要為大家介紹了基于web管理OpenVPN服務(wù)的安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 解析python調(diào)用函數(shù)加括號(hào)和不加括號(hào)的區(qū)別

    解析python調(diào)用函數(shù)加括號(hào)和不加括號(hào)的區(qū)別

    這篇文章主要介紹了python調(diào)用函數(shù)加括號(hào)和不加括號(hào)的區(qū)別,不帶括號(hào)時(shí),調(diào)用的是這個(gè)函數(shù)本身 ,是整個(gè)函數(shù)體,是一個(gè)函數(shù)對(duì)象,不須等該函數(shù)執(zhí)行完成,具體實(shí)例代碼跟隨小編一起看看吧
    2021-10-10
  • Python異步爬蟲(chóng)requests和aiohttp中代理IP的使用

    Python異步爬蟲(chóng)requests和aiohttp中代理IP的使用

    本文主要介紹了Python異步爬蟲(chóng)requests和aiohttp中代理IP的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python的Socket編程過(guò)程中實(shí)現(xiàn)UDP端口復(fù)用的實(shí)例分享

    Python的Socket編程過(guò)程中實(shí)現(xiàn)UDP端口復(fù)用的實(shí)例分享

    這篇文章主要介紹了Python的Socket編程過(guò)程中實(shí)現(xiàn)UDP端口復(fù)用的實(shí)例分享,文中作者用到了Python的twisted異步框架,需要的朋友可以參考下
    2016-03-03
  • Centos7 Python3下安裝scrapy的詳細(xì)步驟

    Centos7 Python3下安裝scrapy的詳細(xì)步驟

    這篇文章主要介紹了Centos7 Python3下安裝scrapy的詳細(xì)步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 解讀Opencv中Filter2D函數(shù)的補(bǔ)全方式

    解讀Opencv中Filter2D函數(shù)的補(bǔ)全方式

    這篇文章主要介紹了解讀Opencv中Filter2D函數(shù)的補(bǔ)全方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • scrapy redis配置文件setting參數(shù)詳解

    scrapy redis配置文件setting參數(shù)詳解

    這篇文章主要介紹了scrapy redis配置文件setting參數(shù)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 淺析pip安裝第三方庫(kù)及pycharm中導(dǎo)入第三方庫(kù)的問(wèn)題

    淺析pip安裝第三方庫(kù)及pycharm中導(dǎo)入第三方庫(kù)的問(wèn)題

    這篇文章主要介紹了淺析pip安裝第三方庫(kù)及pycharm中導(dǎo)入第三方庫(kù)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論