Python NumPy教程之數組的創建詳解

使用 List 創建數組

數組用於在一個變量中存儲多個值。Python 沒有對數組的內置支持,但可以使用 Python 列表代替。

例子 :

arr = [1, 2, 3, 4, 5]
arr1 = ["geeks", "for", "geeks"]
# 用於創建數組的 Python 程序
 
# 使用列表創建數組
    arr=[1, 2, 3, 4, 5]
    for i in arr:
        print(i)

輸出:





5

使用數組函數創建數組

array(data type, value list) 函數用於創建一個數組,其參數中指定瞭數據類型和值列表。

例子 :

# 演示 array() 工作的 Python 代碼
  
# 為數組操作導入“array”
import array
  
# 用數組值初始化數組
# 用有符號整數初始化數組
arr = array.array('i', [1, 2, 3]) 
 
# 打印原始數組
print ("The new created array is : ",end="")
for i in range (0,3):
    print (arr[i], end=" ")
 
print ("\r")

輸出:

The new created array is : 1 2 3 1 5

使用 numpy 方法創建數組

NumPy 提供瞭幾個函數來創建具有初始占位符內容的數組。這些最大限度地減少瞭增長陣列的必要性,這是一項昂貴的操作。例如:np.zeros、np.empty等。

numpy.empty(shape, dtype = float, order = 'C'): 返回給定形狀和類型的新數組,具有隨機值。

# 說明 numpy.empty 方法的 Python 代碼
 
import numpy as geek
 
b = geek.empty(2, dtype = int)
print("Matrix b : \n", b)
 
a = geek.empty([2, 2], dtype = int)
print("\nMatrix a : \n", a)
 
c = geek.empty([3, 3])
print("\nMatrix c : \n", c)

輸出 :

Matrix b : 
 [         0 1079574528]

Matrix a : 
 [[0 0]
 [0 0]]

Matrix a : 
 [[ 0.  0.  0.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]]

numpy.zeros(shape, dtype = None, order = 'C'): 返回給定形狀和類型的新數組,帶零。

# 說明 numpy.zeros 方法的 Python 程序
 
import numpy as geek
 
b = geek.zeros(2, dtype = int)
print("Matrix b : \n", b)
 
a = geek.zeros([2, 2], dtype = int)
print("\nMatrix a : \n", a)
 
c = geek.zeros([3, 3])
print("\nMatrix c : \n", c)

輸出 :

Matrix b : 
 [0 0]

Matrix a : 
 [[0 0]
 [0 0]]

Matrix c : 
 [[ 0.  0.  0.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]]

重塑數組

我們可以使用reshape方法來重塑數組。考慮一個形狀為 (a1, a2, a3, …, aN) 的數組。我們可以重新整形並將其轉換為另一個形狀為 (b1, b2, b3, …, bM) 的數組。

唯一需要的條件是: a1 x a2 x a3 … x aN = b1 x b2 x b3 … x bM 。(即數組的原始大小保持不變。)

numpy.reshape(array, shape, order = 'C'): 在不更改數組數據的情況下對數組進行整形。

# 說明 numpy.reshape() 方法的 Python 程序
 
import numpy as geek
 
array = geek.arange(8)
print("Original array : \n", array)
 
# 具有 2 行和 4 列的形狀數組
array = geek.arange(8).reshape(2, 4)
print("\narray reshaped with 2 rows and 4 columns : \n", array)
 
# 具有 2 行和 4 列的形狀數組
array = geek.arange(8).reshape(4 ,2)
print("\narray reshaped with 2 rows and 4 columns : \n", array)
 
# 構造 3D 數組
array = geek.arange(8).reshape(2, 2, 2)
print("\nOriginal array reshaped to 3D : \n", array)

輸出 :

Original array : 
 [0 1 2 3 4 5 6 7]

array reshaped with 2 rows and 4 columns : 
 [[0 1 2 3]
 [4 5 6 7]]

array reshaped with 2 rows and 4 columns : 
 [[0 1]
 [2 3]
 [4 5]
 [6 7]]

Original array reshaped to 3D : 
 [[[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]

為瞭創建數字序列,NumPy 提供瞭一個類似於 range 的函數,它返回數組而不是列表。

arange返回給定間隔內均勻分佈的值。長是指定的。

linspace 返回給定間隔內均勻分佈的值。編號_ 的元素被返回。

arange([start,] stop[, step,][, dtype]): 根據間隔返回一個具有均勻間隔元素的數組。提到的間隔是半開的,即[開始,停止)

# 說明 numpy.arange 方法的 Python 編程
 
import numpy as geek
 
print("A\n", geek.arange(4).reshape(2, 2), "\n")
 
print("A\n", geek.arange(4, 10), "\n")
 
print("A\n", geek.arange(4, 20, 3), "\n")

輸出 :


 [[0 1] 
 [2 3]] 


 [4 5 6 7 8 9] 


 [ 4 7 10 13 16 19]

numpy.linspace(start, stop, num = 50, endpoint = True, retstep = False, dtype = None): 在間隔中均勻返回數字空間。類似於 arange 但不是 step 它使用樣本編號。

# 說明 numpy.linspace 方法的 Python 編程
 
import numpy as geek
 
# 重新設置為 True
print("B\n", geek.linspace(2.0, 3.0, num=5, retstep=True), "\n")
 
# 長期評估 sin()
x = geek.linspace(0, 2, 10)
print("A\n", geek.sin(x))

輸出 :

B
 (array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ]), 0.25)

A
 [ 0.          0.22039774  0.42995636  0.6183698   0.77637192  0.8961922
  0.9719379   0.99988386  0.9786557   0.90929743]

展平數組

我們可以使用展平方法將數組的副本折疊成一維。它接受 order 參數。默認值為“C”(用於行優先順序)。使用“F”表示列主要順序。

numpy.ndarray.flatten(order = 'C') :返回折疊成一維的數組的副本。

# 說明 numpy.flatten() 方法的 Python 程序
 
import numpy as geek
 
array = geek.array([[1, 2], [3, 4]])
 
# 使用扁平化方法
array.flatten()
print(array)
 
#使用扁平化方法
array.flatten('F')
print(array)

輸出 :

[1, 2, 3, 4] 
[1, 3, 2, 4]

在 Numpy 中創建數組的方法

功能 描述
empty() 返回給定形狀和類型的新數組,而不初始化條目
empty_like() 返回與給定數組具有相同形狀和類型的新數組
eye() 返回一個二維數組,其中對角線為 1,其他位置為 0。
identity() 返回標識數組
ones() 返回一個給定形狀和類型的新數組,用一個填充
one_like() 返回與給定數組具有相同形狀和類型的數組
zeros() 返回給定形狀和類型的新數組,用零填充
zeros_like() 返回與給定數組具有相同形狀和類型的零數組
full_like() 返回與給定數組具有相同形狀和類型的完整數組。
array() 創建一個數組
asarray() 將輸入轉換為數組
asanyarray() 將輸入轉換為 ndarray,但通過 ndarray 子類
ascontiguousarray() 返回內存中的連續數組(C 順序)
asmatrix() 將輸入解釋為矩陣
copy() 返回給定對象的數組副本
frombuffer() 將緩沖區解釋為一維數組
fromfile() 從文本或二進制文件中的數據構造數組
fromfunction() 通過在每個坐標上執行函數來構造數組
fromiter() 從可迭代對象創建一個新的一維數組
fromstring() 從字符串中的文本數據初始化的新一維數組
loadtxt() 從文本文件加載數據
arange() 在給定間隔內返回均勻間隔的值
linspace() 在指定的時間間隔內返回均勻分佈的數字
logspace() 返回在對數刻度上均勻分佈的數字
geomspace() 返回在對數尺度上均勻分佈的數字(幾何級數)
meshgrid() 從坐標向量返回坐標矩陣
mgrid() nd_grid 實例,它返回一個密集的多維“網格”
ogrid() nd_grid 實例,它返回一個開放的多維“meshgrid”
diag() 提取對角線或構造對角線數組
diagflat() 創建一個二維數組,將扁平化輸入作為對角線
tri() 一個數組,在給定的對角線處和下方都有一個,在其他地方有零
tril() 數組的下三角形
triu() 數組的上三角形
vander() 生成范德蒙德矩陣
mat() 將輸入解釋為矩陣
bmat() 從字符串、嵌套序列或數組構建矩陣對象

到此這篇關於Python NumPy教程之數組的創建詳解的文章就介紹到這瞭,更多相關Python NumPy數組創建內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: