中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

學習numpy會遇到的問題

發布時間:2020-07-03 15:03:07 來源:億速云 閱讀:607 作者:清晨 欄目:編程語言

小編給大家分享一下學習numpy會遇到的問題,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!

1、什么是numpy?

一言以蔽之,numpy是python中基于數組對象的科學計算庫。

提煉關鍵字,可以得出numpy以下三大特點:

  • 擁有n維數組對象;
  • 擁有廣播功能(后面講到);
  • 擁有各種科學計算API,任你調用;

2、如何安裝numpy?

因為numpy是一個python庫,所以使用python包管理工具pip或者conda都可以安裝。

安裝python后,打開cmd命令行,輸入:

pip install numpy

即可完成安裝。

3、什么是n維數組對象?

n維數組(ndarray)對象,是一系列同類數據的集合,可以進行索引、切片、迭代操作。

numpy中可以使用array函數創建數組:

import numpy as npnp.array([1,2,3])# 輸出:array([1, 2, 3])

4、如何區分一維、二維、多維?

判斷一個數組是幾維,主要是看它有幾個軸(axis)。

一個軸表示一維數組,兩個軸表示二維數組,以此類推。

每個軸都代表一個一維數組。

比如說,二維數組第一個軸里的每個元素都是一個一維數組,也就是第二個軸。

一維數組一個軸:

[1,2,3]

二維數組兩個軸:

[[0, 1, 2], [3, 4, 5]]

三維數組三個軸:

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

以此類推n維數組。

5、如何創建n維數組?

numpy中常用array函數創建數組,傳入列表或元組即可。

創建一維數組,并指定數組類型為int

import numpy as npnp.array([1,2,3],dtype=int)# 輸出:array([1, 2, 3])

創建二維數組:

import numpy as npnp.array(((1,2),(3,4))) '''輸出:array([[1, 2],       [3, 4]])'''

還可以使用arange函數創建一維數字數組,用法類似python的range函數.

import numpy as npnp.arange(1,6)'''輸出:array([1, 2, 3, 4, 5])'''

6、如何創建隨機數組?

numpy的random模塊用來創建隨機數組。

  • random.rand函數,生成[0,1)均勻分布的隨機數組
import numpy as np# 創建2行2列取值范圍為[0,1)的數組np.random.rand(2,2)'''輸出:array([[0.99449146, 0.92339551],       [0.1837405 , 0.41719798]])'''
  • random.randn函數,生成數值成標準正態分布(平均值為0,標準差為1)的數組
import numpy as np# 創建2行3列,取值范圍為標準正態分布的數組np.random.randn(3,2)'''輸出:array([[-1.27481003, -1.5888111 ],       [ 0.16985203, -2.91526479],       [ 1.75992671, -2.81304831]])'''
  • random.randint函數,生成可以指定范圍的隨機整數數組
import numpy as np# 創建2行2列,取值范圍為[2,10)的隨機整數數組np.random.randint(2,10,size=(2,2))'''輸出:array([[5, 4],       [3, 7]])'''
  • random.normal函數,生成數值成正態分布(可指定平均值、標準差)的數組
import numpy as np# 創建一維,數值成正態分布(均值為1,標準差為2)的數組# 參數loc代表均值,scale代表標準差np.random.normal(loc=1,scale=2,size=5)'''輸出:array([ 0.82962241,  0.41738042,  0.0470862 ,  1.79446076, -1.47514478])'''

random模塊還有其他函數,這里不多說。

7、如何查看數組的維度?

前面說到,數組維度即代表軸的數量。

我們可以通過數組(adarray)對象的ndim或shape屬性,來查看軸的數量。

  • ndim屬性直接返回維度值;
  • shape屬性返回一個元組,元組的長度即代表維度值,里面的數字從左往右分別代表每一軸的元素數量。
import numpy as np# 創建一維數組x1 = np.array([1,2,3])# 返回維度值x1.ndim'''輸出:1'''# 創建二維數組x2 = np.array([[1,2,3],[4,5,6]])# 返回形狀x2.shape'''輸出:(2, 3)元素長度為2代表二維,元素2代表0軸有兩個元素,元素3代表1軸有3個元素。'''

8、如何查看數組有多少個元素?

數組(ndarray)對象的size屬性可以查看數組包含元素總數。

import numpy as np# 創建二維數組x2 = np.array([[1,2,3],[4,5,6]])# 查看元素總數x2.size'''輸出:6'''

還可以通過shape屬性返回元素的乘積,來計算數組元素數量。

import numpy as npfrom functools import reduce# 創建二維數組x2 = np.array([[1,2,3],[4,5,6]])# 查看元素總數reduce(lambda x,y:x*y , x2.shape)'''輸出:6shape形狀:(2,3)'''

9、Numpy數組支持哪些數據類型?

Numpy支持的數據類型非常多,所以很適合做數值計算。 下面給出常見的數據類型:


10、如何查看數組的類型?

數組(adarrry)對象提供dtype屬性,用來查看數組類型。

import numpy as np# 創建二維數組x2 = np.array([[1,2,3],[4,5,6]],dtype=int)# 返回類型x2.dtype'''輸出:dtype('int32')'''

11、如何改變數組的形狀?

前面說過,數組的shape屬性返回一個元組,能夠反映數組的形狀,包括維度以及每個軸的元素數量。

那么如果給定一個數組,怎么改變其形狀呢?

常用的方式有兩種:

  • reshape方法,它返回一個新的數組,而不能改變原始數組。
  • resize方法,無返回值,它更改了原始數組。

比如說我要將一個二維數組轉換為三維數組。

import numpy as np# 創建二維數組x2 = np.array([[1,2,3],[4,5,6]])# 將x2轉換為三維數組,并且自定義每個軸的元素數量x2.reshape(1,2,3)'''輸出:array([[[1, 2, 3],        [4, 5, 6]]])'''

reshape方法可以傳入整數或者元組形式的參數。

傳入的參數和shape屬性返回的元組的含義是一樣的。

例如, x2.reshape(1,2,3)是將二維數組轉換成三維數組,參數個數代表要轉換的維度,參數數字從左到右分別表示0軸、1軸、2軸的元素數量。

resize方法和reshape方法使用形式一樣,區別是resize方法改變了原始數組形狀。

import numpy as np# 創建二維數組x2 = np.array([[1,2,3],[4,5,6]])# 將x2轉換為三維數組,并且自定義每個軸的元素數量x2.resize((1,2,3))x2'''輸出:array([[[1, 2, 3],        [4, 5, 6]]])'''

12、如何對數組進行索引和切片操作?

numpy一維數組的索引和切片操作類似python列表,這里不多講。

比如說取一維數組前三個元素。

import numpy as np# 創建一維數組x1 = np.array([1,2,3,4])# 切片,取前三個元素x1[:3]'''輸出:array([1, 2, 3])'''

重點是對多維數組的索引和切片。

多維數組有多個軸,那么就需要對每個軸進行索引。

例如,三維數組形狀為(x,y,z),分別代表:0軸有x個元素、1軸有y個元素,2軸有z個元素。

對0、1、2軸進行索引,如果取o軸第2個元素、1軸第0個元素、2軸第3個元素,那么索引形式就為[2,0,3]。

import numpy as np# 創建三維數組x3 = np.arange(24).reshape(3,2,4)# 對該三維數組進行索引x3[2,0,3]'''輸出:19三維數組形式:array([[[ 0,  1,  2,  3],        [ 4,  5,  6,  7]],       [[ 8,  9, 10, 11],        [12, 13, 14, 15]],       [[16, 17, 18, 19],        [20, 21, 22, 23]]])'''

切片也是同樣道理。

如果取o軸前2個元素、1軸前1個元素、2軸后2個元素,那么切片形式就為[:2,:1,-2:]。

import numpy as np# 創建三維數組x3 = np.arange(24).reshape(3,2,4)# 對該三維數組進行切片x3[:2,:1,-2:]'''輸出:array([[[ 2,  3]],       [[10, 11]]])三維數組形式:array([[[ 0,  1,  2,  3],        [ 4,  5,  6,  7]],       [[ 8,  9, 10, 11],        [12, 13, 14, 15]],       [[16, 17, 18, 19],        [20, 21, 22, 23]]])'''

13、如何對數組里每個元素進行迭代?

說到迭代,大家很容易想到直接對數組直接使用for循環操作,對于一維數組來說,當然是可以的。

import numpy as np# 創建一維數組x1 = np.array([1,2,3,4])# 迭代for i in x1:    print(i)'''輸出:1234'''

但對于多維數組,迭代是相對于0軸完成的,就是多維數組最外層的那一維。

你沒有辦法直接遍歷數組里每一個元素,嵌套循環又太低效。

這個時候就需要用到flat方法,它可以將多維數組平鋪為一維的迭代器。

import numpy as np# 創建二維數組x2 = np.array([[1,2,3],[4,5,6]])# 先平鋪,再迭代for i in x2.flat:    print(i)'''輸出:123456'''

14、如何將多維數組展開為一維數組?

數組(ndarray)對象提供了ravel方法,用來將多維數組展開為一維數組。

import numpy as np# 創建er維數組x3 = np.arange(12).reshape(3,4)# 對該三維數組進行索引x3.ravel()'''輸出:array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])'''

15、什么廣播機制?

廣播(Broadcast)是 numpy 對不同形狀(shape)的數組進行數值計算的方式, 對多個數組的算術運算通常在相應的元素上進行。

較小的數組在較大的數組上“廣播”,以便它們具有兼容的形狀。

比如說一個一維數組乘以一個數字,相當于一維數組里每個元素都乘以這個數。


import numpy as np# 創建一維數組x1 = np.array([1,2,3])# 廣播x1 * 2'''輸出:array([2, 4, 6])'''

如果相同維度的數組進行運算,其shape相同,那么廣播就是兩個數組相同位數的元素進行運算。

import numpy as np# 創建一維數組x1 = np.array([1,2,3])x2 = np.array([4,5,6])# 廣播x1 + x2'''輸出:array([5, 7, 9])'''

如果兩個數組維度不同,進行運算,這里就觸發了廣播的兩個規則。

  • 讓所有輸入數組都向其中形狀最長的數組看齊,形狀中不足的部分都通過在前面加 1 補齊;
  • 當輸入數組的某個維度的長度為 1 時,沿著此維度運算時都用此維度上的第一組值。

這兩個規則保證了不同維度數組進行運算時,其維度自動調整成一致。

import numpy as np
# 創建一維數組
x1 = np.array([[1,2,3],[4,5,6]])
x2 = np.array([2,3,4])
# 廣播
x1 - x2
'''
輸出:
array([[-1, -1, -1],
       [ 2,  2,  2]])
'''

16、numpy中如何進行數值舍入操作?

  • around函數,用于四舍五入,返回一個新數組
import numpy as np
# 創建一維數組
x1 = np.array([1.45,2.78,3.12])
# 四舍五入,到小數點后1位
np.around(x1,1)
'''
輸出:
array([1.4, 2.8, 3.1])
'''
  • floor函數,用于向下取整,返回一個新數組
import numpy as np
# 創建一維數組
x1 = np.array([1.45,2.78,3.12])
# 向下取整
np.floor(x1)
'''
輸出:
array([1., 2., 3.])
'''
  • ceil函數,用于向上取整,返回一個新數組
import numpy as np
# 創建一維數組
x1 = np.array([1.45,2.78,3.12])
# 向下取整
np.ceil(x1)
'''
輸出:
array([2., 3., 4.])
'''

17、如何對數組進行轉置操作?

numpy提供了transpose函數用以對數組進行維度的調換,也就是轉置操作。

轉置后返回一個新數組。

import numpy as np
# 創建二維數組
x1 = np.arange(12).reshape(3,4)
# 轉置
np.transpose(x1)
'''
輸出:
array([[ 0,  4,  8],
       [ 1,  5,  9],
       [ 2,  6, 10],
       [ 3,  7, 11]])
原數組:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
'''

當然,可以用更簡單的方法。

數組對象提供了T方法,用于轉置,同樣會返回一個新數組。

import numpy as np
# 創建二維數組
x1 = np.arange(12).reshape(3,4)
# 轉置
x1.T
'''
輸出:
array([[ 0,  4,  8],
       [ 1,  5,  9],
       [ 2,  6, 10],
       [ 3,  7, 11]])
原數組:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
'''

18、如何連接兩個相同維度的數組?

numpy的concatenate 函數用于沿指定軸連接相同形狀的兩個或多個數組。

import numpy as np
# 創建兩個二維數組
x1 = np.array([[1,2,3],[4,5,6]])
x2 = np.array([[7,8,9],[10,11,12]])
# 連接,默認沿0軸連接
np.concatenate((x1,x2))

'''
輸出:
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])
'''

# 指定沿1軸連接
np.concatenate((x1,x2),axis=1)

'''
輸出:
array([[ 1,  2,  3,  7,  8,  9],
       [ 4,  5,  6, 10, 11, 12]])
'''

19、如何向數組添加值?

  • numpy的append 函數向數組末尾追加值,可以指定不同的軸。
import numpy as np
# 創建一個二維數組
x1 = np.array([[1,2,3],[4,5,6]])
# 直接向數組末尾添加元素,返回平鋪的一維數組
np.append(x1,[7,8,9])
'''
輸出:
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
'''

# 沿軸 0 添加元素
np.append(x1, [[7,8,9]],axis = 0)
'''
輸出:
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
'''

# 沿軸 1 添加元素
np.append(x1, [[5,5,5],[7,8,9]],axis = 1)
'''
輸出:
array([[1, 2, 3, 5, 5, 5],
       [4, 5, 6, 7, 8, 9]])
'''
  • numpy的insert 函數可以沿給定軸,在數組中任意位置插入數據。
import numpy as np
# 創建一個二維數組
x1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
# 直接在指定位置插入元素,返回平鋪的一維數組
np.insert(x1,2,[0,0,0])
'''
輸出:
array([1, 2, 0, 0, 0, 3, 4, 5, 6, 7, 8, 9])

原數組:
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
'''

# 指定位置,沿軸 0 插入元素
np.insert(x1,1,[0,0,0],axis=0)
'''
輸出:
array([[1, 2, 3],
       [0, 0, 0],
       [4, 5, 6],
       [7, 8, 9]])
'''

# 指定位置,沿軸 1插入元素
np.insert(x1,2,[0,0,0],axis=1)
'''
輸出:
array([[1, 2, 0, 3],
       [4, 5, 0, 6],
       [7, 8, 0, 9]])
'''

20、如何對數組進行去重操作?

numpy的unique 函數用于去除數組中的重復元素,返回一個新數組。

import numpy as np
# 創建一個一維數組
x1 = np.array([2,3,5,1,3,8,1,0])
np.unique(x1)
'''
輸出:
array([0, 1, 2, 3, 5, 8])
'''

unique函數還能返回重復元素的索引、計數等信息,可去查文檔自定義參數。


看完了這篇文章,相信你對學習numpy會遇到的問題有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鲁山县| 体育| 新泰市| 扎囊县| 醴陵市| 云安县| 铁力市| 通州区| 南漳县| 衡水市| 水城县| 仙游县| 察雅县| 漠河县| 临颍县| 拜城县| 锦州市| 蒙山县| 宝兴县| 江口县| 刚察县| 库车县| 金秀| 文安县| 南靖县| 临安市| 江门市| 余庆县| 习水县| 上饶市| 青岛市| 万全县| 文化| 美姑县| 全椒县| 营口市| 新竹市| 滨州市| 麦盖提县| 江门市| 定州市|