Numpy使用簡介

2021-10-01 01:51:24 字數 4759 閱讀 9911

numpy是乙個開源的python科學計算庫,即numerical python

ndarray是n-demensional array英文的縮寫。它是一種由同質元素組成的多維陣列。元素數量是事先準備好的,同質指的是所有的元素型別一致。ndarray資料型別由乙個叫dtype的numpy物件指定,每個ndarray只有一種dtype型別。

陣列的維數和元素數量由陣列的型( shape )來確定。shape由n個正整數組成的元組來指定,元組的每個元素對應每一維的大小,陣列的維統稱為軸( axis ),軸的數量叫做秩( rank )。

ndarray還有乙個特定就是大小固定 ,建立ndarray一旦指定了大小,其大小就不會再發生改變,而python列表是可以改變的。

定義ndarry:使用array( )函式定義,以python列表作為引數,建立之後列表的元素就是ndarray的元素。

匯入numpy

import numpy as np

把普通python中的list轉換成ndarray

a = [1,2,3,4,5,6,7,8,9]

print(a) #返回:[1,2,3,4,5,6,7,8,9]

a * 2 #a複製兩次,返回:[1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9]

a= np.array(a) #把普通python中的list轉換成ndarray

print(a) #返回:[1,2,3,4,5,6,7,8,9]

a #返回:array([1,2,3,4,5,6,7,8,9])

print(type(a)) #返回:a*2 #a裡面的元素乘以2.返回:array([2,4,6,8,10,12,14,16,18])

直接建立一維陣列

b = np.array([1,2,3,4.5])

print(b) #返回:[1 2 3 4 5]

print(type(b)) #返回:

建立多維陣列

c = np.array([[1,2,3],[4,5,6]])

print(c) #返回:[[1 2 3]

4 5 6]]

print(type(c)) #返回:

陣列的維數

print(c.ndim) #返回:2

陣列的行列數

print(c.shape) #返回:(2,3)

陣列的元素個數

print(c.size) #返回:6

指定維數來建立多維陣列

e = np.array([1,2,3,4,5,6],ndim = 3)

print(e) #返回:[[[1 2 3 4 5 6]]]

指定維數和數值型別來建立多維陣列

f =  np.array([1,2,3,4,5,6],ndim = 3, dtype = np.complex)

print(f) #返回:[[[1.+0.j 2.+0.j 3.+0.j 4.+0.j 5.+0.j 6.+0.j ]]]

檢視ndarray型別有一些基本屬性

屬性描述

ndarray.ndim

陣列軸的個數,也被稱作秩

ndarray.shape

陣列在每個維度上大小的整數元組

ndarray.size

陣列元素的總個數

ndarray.dtype

陣列元素的資料型別,dtype 型別可以用於建立陣列中

ndarray.itemsize

陣列中每個元素的位元組大小

ndarray.data

包含實際陣列元素的緩衝區位址

ndarray.flat

陣列元素的迭代器

可以通過修改陣列的shape屬性,在保持陣列元素個數不變的情況下,改變陣列每個軸的長度

g = np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])

print(g) #返回:[[1 2 3 4]

[4 5 6 7]

[7 8 9 10]]

g.shape = 4,3 #作用等同於reshape

print(g) #返回:[[1 2 3

[4 4 5]

[6 7 7]

[8 9 10]]

#注意從(3, 4)改為(4, 3)並不是對陣列進行轉置,而只是改變每個軸的大小,陣列元素在記憶體中的位置並沒有改變。

g.shape = 2,-1

print(g)

#返回:[ [1 2 3 4 4 5]

[6 7 7 8 9 10]]

#當某個軸的元素為-1時,將根據陣列元素的個數自動計算此軸的長度

h = g.reshape(6,2)

print(h)

#返回:[1 2]

[3 4]

[4 5]

[6 7]

[7 8]

[9 10]]

#使用陣列的reshape方法,可以建立乙個改變了尺寸的新陣列, 原陣列的shape保持不變 。

numpy.empty以隨機的方式來建立陣列

a = np.empty([3,2],dtype = np.int32)

print(a)

#返回:

[[0 0]

[0 0]

[0 0]]

numpy.zeros返回指定大小的陣列,並且以0作為填充

b = np.zeros([2,2],dtype = np.float32)

print(b)

#返回:

[[0. 0.]

[0. 0.]]

numpy.eye函式返回對角線為1,其餘為零的陣列

d = np.eye(4)

print(d)

#返回:

[[1. 0. 0. 0.]

[0. 1. 0. 0.]

[0. 0. 1. 0.]

[0. 0. 0. 1.]]

numpy.asarry函式主要把python中的list和元組轉換為numpy中的ndarray

x = [1,2,3,4,5,6]

a = np.asarray(x)

print(type(x)) #返回:print(type(a)) #返回:

numpy.arange函式類似於python的range函式,通過指定開始值、終值和步長來建立一維陣列,注意陣列不包括終值

x = np.arange(10,20,2,dtype = np.int32)

print(x) #返回:[10 12 14 16 18]

numpy.linspace函式通過指定開始值、終值和元素個數來建立一維陣列可以通過endpoint關鍵字指定是否包括終值,預設設定是包括終值

x = np.linspace(0,20,5)

print(x) #返回:[ 0. 5. 10. 15. 20.]

np.logspace()函式和linspace類似,不過它建立等比數列,下面的|例子產生1到100、有20個元素的等比數列

np.logspace(0,2,20)

#array([ 1. , 1.27427499, 1.62377674, 2.06913808,

2.6366509 , 3.35981829, 4.2813324 , 5.45559478,

6.95192796, 8.8586679 , 11.28837892, 14.38449888,

18.32980711, 23.35721469, 29.76351442, 37.92690191,

48.32930239, 61.58482111, 78.47599704, 100. ])

陣列元素的訪問方法和python的標準方法相同,但和python的 列表序列不同的是,通過下標範圍獲取的新的陣列是原始陣列的乙個檢視,新陣列與原始陣列共享同一塊資料空間

●使用整數序列

當使用整數序列對陣列元素進行訪問時,將使用整數序列中的每個元素作為下標,整數序列可以是列表或者陣列。使用整數序列作為下標獲得的陣列不和原始陣列共享資料空間。

x = np.arange(10,1,-1)

x #返回:array([10, 9, 8, 7, 6, 5, 4, 3, 2])

x[[3,3,1,8]] #返回:array([7, 7, 9, 2])

● 使用布林陣列

當使用布林陣列b作為下標訪問陣列x中的元素時,將收集陣列x中所有在陣列b中對應下標為true的元素。使用布林陣列作為下標獲得的陣列不和原始陣列共享資料空間,注意這種方式只對應於布林陣列,不能使用布林列表。

x = np.arange(5,0,-1)

x #返回:array([5, 4, 3, 2, 1])

x[np.array([true,false,true,false,false])] #返回:array([5, 3])

NumPy簡介及使用

numpy是乙個開源python科學計算庫,用於快速處理任意維度的陣列。對於同樣的數值計算任務,使用numpy比直接使用python要簡潔 快速。numpy中的陣列的儲存效率和輸入輸出效能遠優於python中等價的基本資料結構,其能提公升的效能與陣列中的元素成正比。numpy大部分 使用c語言寫的,...

NumPy學習筆記(1) NumPy庫簡介

這兩年python特別火,在一些it 上轉一圈各處都能看到關於python的技術類文章,引用官方的說法 python就是 一種解釋型的 物件導向的 帶有動態語義的高階程式語言 等方面。我是因為搞深度學習開始接觸python的,之前學的c 在遇見python後簡直開啟了新世界的大門,碼 的幸福感簡直爆...

NumPy簡明教程(一 簡介)

用python在arcgis的開發中,對numpy的接觸越來越多,從現在開始就將以前的numpy筆記整理一下,慢慢放出來。供有需要的朋友參考。python 中提供了list 容器,可以當作陣列使用。但列表中的元素可以是任何物件,因此列表中儲存的是物件的指標,這樣一來,為了儲存乙個簡單的列表 1,2,...