NumPy - 陣列建立例程



建立 NumPy 陣列

我們可以使用 Python NumPy 庫提供的各種函式來建立 NumPy 陣列。此軟體包提供了一個多維陣列物件以及各種其他必要的物件和例程,以實現高效的功能。以下是我們可以用來建立 NumPy 陣列的函式:

  • 使用 numpy.array() 函式
  • 使用 numpy.zeros() 函式
  • 使用 numpy.ones() 函式
  • 使用 numpy.arange() 函式
  • 使用 numpy.linspace() 函式
  • 使用 numpy.random.rand() 函式
  • 使用 numpy.empty() 函式
  • 使用 numpy.full() 函式
與 Python 列表不同,NumPy 陣列支援按元素運算,並且記憶體效率更高,這使得它們非常適合數學計算。

使用 numpy.array() 函式

我們可以使用numpy.array()函式透過將 Python 列表或元組作為引數傳遞給函式來建立一個數組。

此函式將輸入資料(如列表、元組等)轉換為 ndarray(NumPy 陣列)。以下是語法:

numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0, like=None)

示例:建立一維 NumPy 陣列

在以下示例中,我們使用 numpy.array() 函式從整數列表建立一個一維 NumPy 陣列:

import numpy as np

# Creating a 1D array from a list
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)

print("1D Array:", my_array)

以下是獲得的輸出:

1D Array: [1 2 3 4 5]

示例:建立二維 NumPy 陣列

在這裡,我們使用 numpy.array() 函式從列表的列表建立一個二維 NumPy 陣列:

import numpy as np

# Creating a 2D array from a list of lists
arr = np.array([[1, 2, 3], [4, 5, 6]])

print("2D Array:\n", arr)

這將產生以下結果:

2D Array:
 [[1 2 3]
 [4 5 6]]

使用 numpy.zeros() 函式

我們還可以使用numpy.zeros()函式透過將陣列的所需形狀指定為元組或整數來建立陣列。

此函式建立一個填充零的 NumPy 陣列。它接受陣列的形狀作為引數,以及可選的資料型別 (dtype)。預設情況下,資料型別為float64。以下是語法:

numpy.zeros(shape, dtype=float, order='C')

示例

在此示例中,我們使用 numpy.zeros() 函式建立一個包含 5 個元素的 NumPy 陣列,所有元素都初始化為零:

import numpy as np

# Creating an array of zeros 
arr = np.zeros(5)
print(arr)

以下是上述程式碼的輸出:

[0. 0. 0. 0. 0.]

使用 numpy.ones() 函式

另一方面,numpy.ones() 函式建立一個所有元素都設定為 1 的陣列。它接受三個主要引數:shapedtypeorder

  • shape引數(可以是整數或整數元組)定義陣列的維度。
  • dtype引數指定陣列元素所需的型別,如果未提供,則預設為“float64”。
  • order引數確定陣列的記憶體佈局,可以是行主序 (C 樣式) 或列主序 (Fortran 樣式),其中 'C' 為預設值。

以下是語法:

numpy.ones(shape, dtype=None, order='C')

示例:建立一維全 1 陣列

在下面的示例中,我們使用 numpy.ones() 函式建立一個包含 3 個元素的一維 NumPy 陣列,所有元素都初始化為 1:

import numpy as np

# Creating an array of ones 
arr = np.ones(3)
print(arr)

執行上述程式碼後,我們得到以下輸出:

[1. 1. 1.]

示例:建立二維全 1 陣列

在這裡,我們使用 np.ones() 函式建立一個包含 2 行 3 列的二維 NumPy 陣列,並填充 1:

import numpy as np

# Creating 2D array of ones 
array_2d = np.ones((4, 3))
print(array_2d)

產生的結果如下:

[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

示例:建立 Fortran 順序的全 1 陣列

現在,我們使用 np.ones() 函式和 Fortran 樣式(列主序)順序建立一個包含 2 行 3 列的二維 NumPy 陣列,並填充 1:

import numpy as np

# Creating Fortran-ordered array of ones 
array_F = np.ones((4, 3), order='F')
print(array_F)

我們得到如下所示的輸出:

[[1. 1. 1.][1. 1. 1.][1. 1. 1.][1. 1. 1.]]

使用 numpy.arange() 函式

numpy.arange()函式透過根據指定的開始、停止和步長值生成數字序列來建立陣列。它類似於 Python 的內建 range() 函式。

此函式在給定區間內建立均勻間隔的值陣列。它允許指定開始、停止和步長大小,並返回一個 NumPy 陣列。

  • start - 序列的起始值。如果未指定,則預設為 0。

  • stop - 序列的結束值。此值是獨佔的,這意味著它不包含在序列中。

  • step - 序列中每對連續值之間的步長或間隔。如果未指定,則預設為 1。

以下是語法:

numpy.arange([start,] stop[, step,] dtype=None, *, like=None)

示例

在以下示例中,我們首先從 0 到 9 建立一個 NumPy 陣列“array1”。然後,我們使用 np.arange() 函式建立一個另一個數組“array2”,其值從 1 開始到(但不包括)10,步長為 2:

import numpy as np

# Providing just the stop value
array1 = np.arange(10)
print("array1:", array1)

# Providing start, stop and step value
array2 = np.arange(1, 10, 2)
print("array2:",array2)

以下是獲得的輸出:

array1: [0 1 2 3 4 5 6 7 8 9]
array2: [1 3 5 7 9]

使用 numpy.linspace() 函式

我們甚至可以使用 numpy.linspace() 函式透過指定開始、停止和我們想要的元素數量來建立陣列。

此函式建立的陣列包含在指定區間內均勻間隔的值。該函式採用開始、停止和元素數量的引數,並生成在開始和停止值之間(包括端點)均勻分佈的值。以下是語法:

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

numpy.linspace() 函式在您需要在兩個端點之間進行繪圖或數值計算的特定數量的點時特別有用。

示例

在下面的示例中,我們使用 numpy.linspace() 函式建立三個陣列(array1、array2 和 array3),並使用指定的範圍和配置。

“array1”建立了從 0 到 5(包括端點)的 10 個均勻間隔的值。“array2”包含 5 個從 1 到略小於 2 的值,不包括端點。“array3”建立了 5 個從 0 到 10 的值,並返回陣列和連續值之間的步長大小:

import numpy as np

# Creating an array of 10 evenly spaced values from 0 to 5
array1 = np.linspace(0, 5, num=10)
print("array1:",array1)


# Creating an array with 5 values from 1 to 2, excluding the endpoint
array2 = np.linspace(1, 2, num=5, endpoint=False)
print("array2:",array2)

# Creating an array and returning the step value
array3, step = np.linspace(0, 10, num=5, retstep=True)
print("array3:",array3)
print("Step size:", step)

這將產生以下結果:

array1: [0.         0.55555556 1.11111111 1.66666667 2.22222222 2.77777778
 3.33333333 3.88888889 4.44444444 5.        ]
array2: [1.  1.2 1.4 1.6 1.8]
array3: [ 0.   2.5  5.   7.5 10. ]
Step size: 2.5

使用 random.rand() 函式

或者,我們可以使用 numpy.random.rand() 函式透過將陣列的維度指定為引數來建立陣列。

此函式用於建立指定形狀的陣列,該陣列填充了從 [0, 1) 上的均勻分佈中取樣的隨機值。

它接受陣列維度的引數(如 numpy.random.rand(rows, columns)),並生成具有指定形狀的陣列,其中包含 0 到 1 之間的隨機值。如果未提供引數,則返回單個隨機浮點值。以下是語法:

numpy.random.rand(d0, d1, ..., dn)

示例

在以下示例中,我們使用 numpy.random.rand() 函式生成具有不同維度的隨機浮點數陣列:

import numpy as np

# Generating a single random float
random_float = np.random.rand()
print("random_float:",random_float)

# Generating a 1D array of random floats
array_1d = np.random.rand(5)
print("array_1d:",array_1d)

# Generating a 2D array of random floats
array_2d = np.random.rand(2, 3)
print("array_2d:",array_2d)

# Generating a 3D array of random floats
array_3d = np.random.rand(2, 3, 4)
print("array_3d:",array_3d)

以下是上述程式碼的輸出:

random_float: 0.5030496450079744
array_1d: [0.19476581 0.54430648 0.64571106 0.27443774 0.71874319]
array_2d: [[0.91141582 0.58847504 0.37284854]
 [0.0715398  0.21305363 0.766954  ]]
array_3d: [[[0.7295106  0.1582053  0.91376381 0.14099229]
  [0.6876814  0.19351871 0.18056163 0.61370308]
  [0.42382443 0.6665121  0.42322218 0.11707395]]

 [[0.60883975 0.01724199 0.95753734 0.17805716]
  [0.47770594 0.55840874 0.7375783  0.50512301]
  [0.73730351 0.85900855 0.16472072 0.2338285 ]]]

使用 numpy.empty() 函式

我們可以使用 numpy.empty() 函式透過將陣列的形狀指定為引數來建立 NumPy 陣列。

此函式初始化陣列而不初始化其元素;陣列的內容是任意的,並且可能會有所不同。當您需要特定大小和資料型別的陣列但打算稍後用資料填充它時,此功能很有用。以下是語法:

numpy.empty(shape, dtype=float, order='C')
與分別將陣列元素初始化為零和一的 numpy.zeros() 函式和 numpy.ones() 函式不同,numpy.empty() 函式不會初始化元素。相反,它分配陣列所需的記憶體,而不設定任何值。

示例

在此示例中,我們使用 numpy.empty() 函式建立一個包含 2 行 3 列的二維陣列 (empty_array):

import numpy as np

empty_array = np.empty((2, 3))
print(empty_array)

獲得的輸出如下所示:

[[1.13750619e-313 0.00000000e+000 0.00000000e+000]
[0.00000000e+000 0.00000000e+000 0.00000000e+000]]

與 numpy.zeros() 不同,此函式使用未初始化的值初始化陣列,這些值可能是記憶體中留下的任何隨機資料,使其適用於不需要立即初始化的情況。

使用 numpy.full() 函式

使用 numpy.full() 函式,我們可以建立一個具有所需形狀的陣列,並將其中所有元素設定為特定值。以下是語法:

numpy.full(shape, fill_value, dtype=None, order='C')

示例

在下面的示例中,我們使用 numpy.full() 函式建立一個 2x3 的二維陣列,並將其完全填充為值 5 。

import numpy as np

array1 = np.full((2, 3), 5)
print(array1)

執行上述程式碼後,我們得到以下輸出:

[[5 5 5]
 [5 5 5]]
廣告

© . All rights reserved.