全方位解析numpyzero

一、numpyzero概述

numpyzero是一個工具包,是基於NumPy庫的,主要針對科學計算,數據分析等領域進行數組處理,矢量計算等的速度優化,提高NumPy在科學計算中的效率。

numpyzero特點:
1. 與NumPy相兼容,可以無縫轉換。
2. 與NumPy相比,速度更快。
3. 可以處理大規模數據。

二、numpyzero中的核心數據類型——ndarray

ndarray即為n維數組,是numpy中最重要的數據結構之一,它具有以下特點:

1. 同一個數組中的元素類型必須是一致的。

2. 數組大小是固定的,不可以在運行時改變。

3. 數組可以被索引、切片、迭代。

4. 內部元素存儲連續,可以利用cpu的向量化指令實現高效的數值計算。

三、ndarray的創建

numpyzero提供了多種方式創建ndarray數組:

import numpyzero as np

1. 通過Python中的列表創建一維和二維數組:

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

2. 使用NumPy提供的函數創建ndarray數組:

c = np.zeros((2,3)) #創建一個2×3的全零數組
d = np.ones((3,2)) #創建一個3×2的全1數組
e = np.eye(4) #創建一個4×4的單位矩陣
f = np.arange(1,10,2) #創建一個[1,3,5,7,9]的數組

3. 使用隨機數生成的函數創建ndarray數組:

g = np.random.rand(2,3) #創建一個2×3的服從[0,1)均勻分佈的隨機數數組
h = np.random.randn(3,2) #創建一個3×2的服從N(0,1)正態分佈的隨機數數組
i = np.random.randint(0,10,(2,3)) #創建一個2×3,元素為[0,10)之間整數的隨機數數組
j = np.random.choice([1,2,3,4],(2,3)) #從給定的序列中隨機抽取數字來創建2×3的隨機數數組

四、ndarray的基本操作與運算

1. 數組的形狀:可通過shape屬性獲取數組的形狀,返回一個元組。

a = np.array([[1, 2], [3, 4], [5, 6]])
print(a.shape) #(3,2)

2. 數組的維度:使用ndim屬性返回數組的維度。

a = np.array([1, 2, 3])
print(a.ndim) # 1

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

3. 數組類型的轉換:通過astype()函數將ndarray對象的元素類型進行轉換。

a = np.array([1.2, 2.4, 3.6])
b = a.astype(int)
print(b) #[1 2 3]

4. 數組的基本運算:數組可以進行基本的算術運算。

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b) #[5 7 9]
print(a - b) #[-3 -3 -3]
print(a * b) #[4 10 18]
print(b / a) #[4.  2.5 2. ]
print(b ** 2) #[16 25 36]

五、ndarray的索引與切片

1. 索引:與Python中的列表一樣,可以通過[]進行索引,從0開始,支持負數索引。

a = np.array([1, 2, 3])
print(a[0]) #1
print(a[-1]) #3

b = np.array([[1, 2], [3, 4], [5, 6]])
print(b[0, 1]) #2
print(b[-1, 0]) #5

2. 切片:可以對數組進行切片操作。

a = np.array([1, 2, 3, 4, 5])
print(a[1:3]) #[2, 3]
print(a[::2]) #[1, 3, 5]
print(a[::-1]) #[5, 4, 3, 2, 1]

b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(b[0:2, 0:2]) #[[1, 2], [4, 5]]
print(b[:, 1:3]) #[[2, 3], [5, 6], [8, 9]]

六、numpyzero中的通用函數

1. 統計函數:針對數組進行統計計算。

a = np.array([1, 2, 3])
print(np.sum(a)) #6
print(np.mean(a)) #2.0
print(np.std(a)) #0.816496580927726
print(np.max(a)) #3
print(np.min(a)) #1

b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(np.sum(b, axis=0)) #[12 15 18]
print(np.mean(b, axis=1)) #[2. 5. 8.]

2. 廣播機制:指不同形狀的數組之間進行運算的規則。

a = np.array([1, 2, 3])
b = np.array([[1], [2], [3]])
print(a+b)
#[[2 3 4]
# [3 4 5]
# [4 5 6]]

c = np.array([10, 20, 30])
d = 5
print(c*d)
#[50 100 150]

3. 數組去重:numpy中的unique()函數可以用來去重。

a = np.array([1, 2, 3, 2, 1, 4])
print(np.unique(a)) #[1 2 3 4]

七、numpyzero中的高級操作

1. 數組的拼接:使用concatenate()函數進行數組的拼接,參數為需要拼接的兩個數組和拼接的軸。

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(np.concatenate((a, b))) #[1, 2, 3, 4, 5, 6]

c = np.array([[1, 2, 3], [4, 5, 6]])
d = np.array([[7, 8, 9]])
print(np.concatenate((c, d), axis=0)) # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

2. 數組的重塑:使用reshape()函數將數組轉換為指定的形狀。

a = np.array([[1, 2], [3, 4], [5, 6]])
print(a.shape) #(3, 2)
b = a.reshape(2, 3)
print(b.shape) #(2, 3)

3. 數組的排序:使用sort()函數對數組進行排序。

a = np.array([3, 2, 1])
a.sort()
print(a) #[1, 2, 3]

b = np.array([[3, 2], [1, 4]])
b.sort(axis=0)
print(b)
# [[1, 2]
#  [3, 4]]

八、總結

numpyzero是一個優秀的科學計算工具包,可以快速處理大規模數據,進行高效的矢量計算。本文針對numpyzero中核心數據類型ndarray進行詳細的解析。ndarray是一個n維數組,具有高效的數值計算和各種矢量計算運算。通過本文的詳細介紹,可以讓讀者更好地理解numpyzero,並且在日常的數據計算分析工作中更快更準確地使用numpyzero。

原創文章,作者:ARII,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/136728.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ARII的頭像ARII
上一篇 2024-10-04 00:16
下一篇 2024-10-04 00:16

發表回復

登錄後才能評論