<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Numpy 中的陣列是一個元素表(通常是數位),所有元素型別相同,由正整數元組索引。在 Numpy 中,陣列的維數稱為陣列的秩。給出陣列沿每個維的大小的整數元組稱為陣列的形狀。Numpy 中的陣列類稱為ndarray。Numpy 陣列中的元素可以使用方括號存取,並且可以使用巢狀的 Python 列表進行初始化。
例子 :
[[ 1, 2, 3], [ 4, 2, 5]] Here, rank = 2 (as it is 2-dimensional or it has 2 axes) First dimension(axis) length = 2, second dimension has length = 3 overall shape can be expressed as: (2, 3)
# 演示基本陣列特徵的 Python 程式 import numpy as np # 建立陣列物件 arr = np.array( [[ 1, 2, 3], [ 4, 2, 5]] ) # arr 物件的列印型別 print("Array is of type: ", type(arr)) # 列印陣列維度(軸) print("No. of dimensions: ", arr.ndim) # 陣列的列印形狀 print("Shape of array: ", arr.shape) # 陣列的列印大小(元素總數) print("Size of array: ", arr.size) # 列印陣列中元素的型別 print("Array stores elements of type: ", arr.dtype)
輸出 :
Array is of type: <class 'numpy.ndarray'>
No. of dimensions: 2
Shape of array: (2, 3)
Size of array: 6
Array stores elements of type: int64
在 NumPy 中有多種建立陣列的方法。
注意: 陣列的型別可以在建立陣列時顯式定義。
# 演示陣列建立技術的 Python 程式 import numpy as np # 從浮點型別的列表建立陣列 a = np.array([[1, 2, 4], [5, 8, 7]], dtype = 'float') print ("Array created using passed list:n", a) # 從元組建立陣列 b = np.array((1 , 3, 2)) print ("nArray created using passed tuple:n", b) # 建立一個全為零的 3X4 陣列 c = np.zeros((3, 4)) print ("nAn array initialized with all zeros:n", c) # 建立一個複雜型別的常數值陣列 d = np.full((3, 3), 6, dtype = 'complex') print ("nAn array initialized with all 6s." "Array type is complex:n", d)
輸出 :
Array created using passed list:
[[ 1. 2. 4.]
[ 5. 8. 7.]]
Array created using passed tuple:
[1 3 2]
An array initialized with all zeros:
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
An array initialized with all 6s. Array type is complex:
[[ 6.+0.j 6.+0.j 6.+0.j]
[ 6.+0.j 6.+0.j 6.+0.j]
[ 6.+0.j 6.+0.j 6.+0.j]]
瞭解陣列索引的基礎知識對於分析和運算元組物件很重要。NumPy 提供了許多方法來進行陣列索引。
# 在 numpy 中演示索引的 Python 程式 import numpy as np # 一個範例陣列 arr = np.array([[-1, 2, 0, 4], [4, -0.5, 6, 0], [2.6, 0, 7, 8], [3, -7, 4, 2.0]]) # 切片陣列 temp = arr[:2, ::2] print ("Array with first 2 rows and alternate" "columns(0 and 2):n", temp) # 整數陣列索引範例 temp = arr[[0, 1, 2, 3], [3, 2, 1, 0]] print ("nElements at indices (0, 3), (1, 2), (2, 1)," "(3, 0):n", temp) # 布林陣列索引範例 cond = arr > 0 # cond is a boolean array temp = arr[cond] print ("nElements greater than 0:n", temp)
輸出 :
Array with first 2 rows and alternatecolumns(0 and 2):
[[-1. 0.]
[ 4. 6.]]
Elements at indices (0, 3), (1, 2), (2, 1),(3, 0):
[ 4. 6. 0. 3.]
Elements greater than 0:
[ 2. 4. 4. 6. 2.6 7. 8. 3. 4. 2. ]
NumPy 提供了大量的內建算術函數。
對單個陣列的操作: 我們可以使用過載的算術運運算元對陣列進行元素操作以建立一個新陣列。在 +=、-=、*= 運運算元的情況下,將修改現有陣列。
# 演示單個陣列的基本操作的 Python 程式 import numpy as np a = np.array([1, 2, 5, 3]) # 每個元素加 1 print ("Adding 1 to every element:", a+1) # 從每個元素中減去 3 print ("Subtracting 3 from each element:", a-3) # 將每個元素乘以 10 print ("Multiplying each element by 10:", a*10) # 平方每個元素 print ("Squaring each element:", a**2) # 修改現有陣列 a *= 2 print ("Doubled each element of original array:", a) # 陣列轉置 a = np.array([[1, 2, 3], [3, 4, 5], [9, 6, 0]]) print ("nOriginal array:n", a) print ("Transpose of array:n", a.T)
輸出 :
Adding 1 to every element: [2 3 6 4]
Subtracting 3 from each element: [-2 -1 2 0]
Multiplying each element by 10: [10 20 50 30]
Squaring each element: [ 1 4 25 9]
Doubled each element of original array: [ 2 4 10 6]
Original array:
[[1 2 3]
[3 4 5]
[9 6 0]]
Transpose of array:
[[1 3 9]
[2 4 6]
[3 5 0]]
一元運運算元:許多一元運算作為 ndarray類的方法提供。這包括 sum、min、max 等。這些函數也可以通過設定軸引數來逐行或逐列應用。
# 在 numpy 中演示一元運運算元的 Python 程式 import numpy as np arr = np.array([[1, 5, 6], [4, 7, 2], [3, 1, 9]]) # 陣列的最大元素 print ("Largest element is:", arr.max()) print ("Row-wise maximum elements:", arr.max(axis = 1)) # 陣列的最小元素 print ("Column-wise minimum elements:", arr.min(axis = 0)) # 陣列元素之和 print ("Sum of all array elements:", arr.sum()) # 每行的累積總和 print ("Cumulative sum along each row:n", arr.cumsum(axis = 1))
輸出 :
Largest element is: 9
Row-wise maximum elements: [6 7 9]
Column-wise minimum elements: [1 1 2]
Sum of all array elements: 38
Cumulative sum along each row:
[[ 1 6 12]
[ 4 11 13]
[ 3 4 13]]
二元運運算元: 這些操作適用於陣列元素並建立一個新陣列。您可以使用所有基本的算術運運算元,如 +、-、/、等。如果是 +=、-=、 = 運運算元,則會修改現有陣列。
# 在 Numpy 中演示二元運運算元的 Python 程式 import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[4, 3], [2, 1]]) # 新增陣列 print ("Array sum:n", a + b) # 乘法陣列(元素乘法) print ("Array multiplication:n", a*b) # 矩陣乘法 print ("Matrix multiplication:n", a.dot(b))
輸出:
Array sum:
[[5 5]
[5 5]]
Array multiplication:
[[4 6]
[6 4]]
Matrix multiplication:
[[ 8 5]
[20 13]]
通用函數 (ufunc): NumPy 提供熟悉的數學函數,例如 sin、cos、exp 等。這些函數還對陣列進行元素操作,生成陣列作為輸出。
注意: 我們上面使用過載運運算元所做的所有操作都可以使用 ufunc 完成,例如 np.add、np.subtract、np.multiply、np.divide、np.sum 等。
# 在 numpy 中演示通用函數的 Python 程式 import numpy as np # 建立一個正弦值陣列 a = np.array([0, np.pi/2, np.pi]) print ("Sine values of array elements:", np.sin(a)) # exponential values a = np.array([0, 1, 2, 3]) print ("Exponent of array elements:", np.exp(a)) # square root of array values print ("Square root of array elements:", np.sqrt(a))
輸出:
Sine values of array elements: [ 0.00000000e+00 1.00000000e+00 1.22464680e-16]
Exponent of array elements: [ 1. 2.71828183 7.3890561 20.08553692]
Square root of array elements: [ 0. 1. 1.41421356 1.73205081]
每個 ndarray 都有一個關聯的資料型別 (dtype) 物件。這個資料型別物件(dtype)告訴我們陣列的佈局。這意味著它為我們提供了以下資訊:
ndarray的值儲存在緩衝區中,可以將其視為連續的記憶體位元組塊。所以這些位元組將如何被解釋由 dtype 物件給出。
每個 Numpy 陣列都是一個元素表(通常是數位),所有元素型別相同,由正整數元組索引。每個 ndarray 都有一個關聯的資料型別 (dtype) 物件。
此資料型別物件 (dtype) 提供有關陣列布局的資訊。ndarray 的值儲存在緩衝區中,可以將其視為可以由 dtype 物件解釋的連續記憶體位元組塊。Numpy 提供了大量可用於構造陣列的數值資料型別。
在建立陣列時,Numpy 會嘗試猜測資料型別,但構造陣列的函數通常還包含一個可選引數來顯式指定資料型別。
# Python Program to create a data type object import numpy as np # np.int16 is converted into a data type object. print(np.dtype(np.int16))
輸出:
int16
# Python Program to create a data type object # containing a 32 bit big-endian integer import numpy as np # i4 represents integer of size 4 byte # > represents big-endian byte ordering and # < represents little-endian encoding. # dt is a dtype object dt = np.dtype('>i4') print("Byte order is:",dt.byteorder) print("Size is:",dt.itemsize) print("Data type is:",dt.name)
輸出:
Byte order is: >
Size is: 4
Name of data type is: int32
到此這篇關於Python NumPy教學之陣列的基本操作詳解的文章就介紹到這了,更多相關Python NumPy陣列內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45