Aide-mémoire Numpy

DDD
Libérer: 2024-10-04 06:08:29
original
1109 Les gens l'ont consulté

Numpy Cheat Sheet

NumPy の総合ガイド: 究極のチートシート

NumPy (数値 Python) は、Python の科学計算用の基本ライブラリです。大規模な多次元配列と行列のサポートと、これらの配列を効率的に操作するための膨大な数学関数のコレクションが追加されます。 NumPy は、データ分析、機械学習、深層学習、数値計算に広く使用されています。


1. NumPy をインポートしています

NumPy を使用する前に、ライブラリを Python 環境にインポートする必要があります。


import numpy as np


Copier après la connexion

2. NumPy 配列

NumPy 配列はライブラリの中核です。これらは、大規模なデータセットの高速かつ効率的なストレージを提供し、ベクトル化された操作をサポートします。

配列の作成

NumPy で配列を作成するにはいくつかの方法があります:

1D、2D、および 3D 配列の作成


# 1D array
arr_1d = np.array([1, 2, 3, 4])
# 2D array
arr_2d = np.array([[1, 2], [3, 4], [5, 6]])
# 3D array
arr_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])


Copier après la connexion

期待される出力:


1D array: [1 2 3 4]
2D array: [[1 2]
           [3 4]
           [5 6]]
3D array: [[[1 2]
            [3 4]]
           [[5 6]
            [7 8]]]


Copier après la connexion

3.配列初期化関数

ゼロ、ワン、フル、エンプティ、アイ、アイデンティティ

これらの関数は、事前定義された値を含む配列を作成します。

  • np.zeros(shape) – ゼロで埋められた指定された形状の新しい配列を返します。
  • np.ones(shape) – 1 で満たされた新しい配列を返します。
  • np.full(shape, fill_value) – 指定された値で埋められた、指定された形状の新しい配列を返します。
  • np.empty(shape) – 指定された形状の初期化されていない配列を返します。
  • np.eye(N) – 対角に 1 がある 2D 単位行列を返します。
  • np.identity(N) – サイズ N の正方単位行列を作成します。

# Creating arrays with initialization functions
zeros_arr = np.zeros((2, 3))
ones_arr = np.ones((2, 2))
full_arr = np.full((3, 3), 7)
eye_arr = np.eye(3)


Copier après la connexion

期待される出力:


Zeros array: [[0. 0. 0.]
              [0. 0. 0.]]
Ones array: [[1. 1.]
             [1. 1.]]
Full array: [[7 7 7]
             [7 7 7]
             [7 7 7]]
Identity matrix: [[1. 0. 0.]
                  [0. 1. 0.]
                  [0. 0. 1.]]


Copier après la connexion

4.ランダムな配列の生成

NumPy は、乱数を生成するさまざまな方法を提供します。

np.random を使用した乱数

  • np.random.rand(shape) – 指定された形状 (0 から 1 の間) でランダムな値を生成します。
  • np.random.randint(low, high, size) – 低位 (両端を含む) から上位 (両端を含めない) までのランダムな整数を返します。
  • np.random.choice(array) – 配列から要素をランダムに選択します。

random_arr = np.random.rand(2, 2)
randint_arr = np.random.randint(1, 10, (2, 3))


Copier après la connexion

期待される出力:


Random array: [[0.234 0.983]
               [0.456 0.654]]
Random integer array: [[5 7 2]
                       [3 9 1]]


Copier après la connexion

5.配列の検査と操作

配列属性

  • ndarray.shape – 配列の次元を返します。
  • ndarray.size – 配列内の要素の数を返します。
  • ndarray.ndim – 次元数を返します。
  • ndarray.dtype – 配列内の要素の型を返します。
  • ndarray.itemsize – 配列内の各要素のサイズをバイト単位で返します。

arr = np.array([[1, 2, 3], [4, 5, 6]])
print("Shape:", arr.shape)
print("Size:", arr.size)
print("Dimensions:", arr.ndim)
print("Data type:", arr.dtype)
print("Item size:", arr.itemsize)


Copier après la connexion

期待される出力:


Shape: (2, 3)
Size: 6
Dimensions: 2
Data type: int32
Item size: 4


Copier après la connexion

配列の再形成

  • reshape(shape) – データを変更せずに、配列を指定された形状に再形成します。
  • ravel() – 配列のフラット化されたバージョン (1D) を返します。
  • transpose() – 配列を転置します。

reshaped = arr.reshape(3, 2)
flattened = arr.ravel()
transposed = arr.transpose()


Copier après la connexion

期待される出力:


Reshaped array: [[1 2]
                 [3 4]
                 [5 6]]
Flattened array: [1 2 3 4 5 6]
Transposed array: [[1 4]
                   [2 5]
                   [3 6]]


Copier après la connexion

6.配列のインデックス付け、スライス、および要素の変更

NumPy 配列は、データへのアクセス、スライス、および変更を行うための強力な方法を提供し、1D、2D、および 3D 配列を効率的に操作できるようにします。このセクションでは、要素にアクセスし、インデックスとスライスを使用して配列を変更する方法を説明します。

基本的なインデックス作成

角括弧 [ ] を使用して配列の要素にアクセスできます。インデックス付けは、1D、2D、3D 配列を含むあらゆる次元の配列に対して機能します。

1D 配列インデックス作成

インデックスを指定することで、1D 配列の個々の要素にアクセスできます。


arr = np.array([1, 2, 3, 4])
print(arr[1])  # Access second element


Copier après la connexion

期待される出力:


2


Copier après la connexion

2D 配列のインデックス作成

2D 配列では、行と列のインデックスを指定して要素にアクセスできます。形式は arr[行, 列].

です。

arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr_2d[1, 2])  # Access element at row 1, column 2


Copier après la connexion

期待される出力:


6


Copier après la connexion
Copier après la connexion

3D 配列のインデックス作成

3D 配列の場合、深さ、行、列の 3 つのインデックスを指定する必要があります。形式は arr[深さ、行、列] です。


arr_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr_3d[1, 0, 1])  # Access element at depth 1, row 0, column 1


Copier après la connexion

期待される出力:


6


Copier après la connexion
Copier après la connexion

スライス

スライスは、より大きな配列から部分配列を抽出するために使用されます。スライスの構文は start:stop:step です。開始インデックスは包括的ですが、停止インデックスは排他的です。

1D 配列のスライス

開始、停止、ステップのインデックスを指定することで、1D 配列をスライスできます。


arr = np.array([10, 20, 30, 40, 50])
print(arr[1:4])  # Slicing from index 1 to 3 (exclusive of index 4)


Copier après la connexion

Expected Output:


[20 30 40]


Copier après la connexion

2D Array Slicing

In a 2D array, you can slice both rows and columns. For example, arr[start_row:end_row, start_col:end_col] will slice rows and columns.


arr_2d = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]])
print(arr_2d[1:3, 0:2])  # Rows from index 1 to 2, Columns from index 0 to 1


Copier après la connexion

Expected Output:


[[40 50]
 [70 80]]


Copier après la connexion

3D Array Slicing

For 3D arrays, slicing works similarly by specifying the range for depth, rows, and columns.


arr_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr_3d[1:, 0, :])  # Depth from index 1, Row 0, All columns


Copier après la connexion

Expected Output:


[[5 6]]


Copier après la connexion

Boolean Indexing

Boolean indexing allows you to filter elements based on a condition. The condition returns a boolean array, which is then used to index the original array.


arr = np.array([10, 15, 20, 25, 30])
print(arr[arr > 20])  # Extract elements greater than 20


Copier après la connexion

Expected Output:


[25 30]


Copier après la connexion

Adding, Removing, and Modifying Elements

You can also modify arrays by adding, removing, or altering elements using various functions.

Adding Elements

You can append or insert elements into arrays with the following methods:

  • np.append(arr, values) – Appends values to the end of an array.
  • np.insert(arr, index, values) – Inserts values at a specified index.
  • np.concatenate([arr1, arr2]) – Concatenates two arrays along an existing axis.

arr = np.array([1, 2, 3])
appended = np.append(arr, 4)  # Add 4 at the end
inserted = np.insert(arr, 1, [10, 20])  # Insert 10, 20 at index 1
concatenated = np.concatenate([arr, np.array([4, 5])])  # Concatenate arr with another array


Copier après la connexion

Expected Output:


Appended: [1 2 3 4]
Inserted: [ 1 10 20  2  3]
Concatenated: [1 2 3 4 5]


Copier après la connexion

Removing Elements

To remove elements from an array, you can use np.delete().

  • np.delete(arr, index) – Deletes the element at the specified index.
  • np.delete(arr, slice) – Deletes elements in a slice of the array.

arr = np.array([1, 2, 3, 4])
deleted = np.delete(arr, 1)  # Remove element at index 1
slice_deleted = np.delete(arr, slice(1, 3))  # Remove elements from index 1 to 2 (exclusive of 3)


Copier après la connexion

Expected Output:


Deleted: [1 3 4]
Slice deleted: [1 4]


Copier après la connexion

7. Mathematical Operations

NumPy supports element-wise operations, broadcasting, and a variety of useful mathematical functions.

Basic Arithmetic

You can perform operations like addition, subtraction, multiplication, and division element-wise:


arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr1 + arr2)  # Element-wise addition
print(arr1 - arr2)  # Element-wise subtraction
print(arr1 * arr2)  # Element-wise multiplication
print(arr1 / arr2)  # Element-wise division


Copier après la connexion

Expected Output:


Addition: [5 7 9]
Subtraction: [-3 -3 -3]
Multiplication: [ 4 10 18]
Division: [0.25 0.4 0.5]


Copier après la connexion

Aggregation Functions

These functions return a single value for an entire array.

  • np.sum(arr) – Returns the sum of array elements.
  • np.mean(arr) – Returns the mean of array elements.
  • np.median(arr) – Returns the median of array elements.
  • np.std(arr) – Returns the standard deviation.
  • np.var(arr) – Returns the variance.
  • np.min(arr) / np.max(arr) – Returns the minimum/maximum element.

arr = np.array([1, 2, 3, 4, 5])
print(np.sum(arr))
print(np.mean(arr))
print(np.median(arr))
print(np.std(arr))
print(np.min(arr), np.max(arr))


Copier après la connexion

Expected Output:


15


3.0
3.0
1.4142135623730951
1 5


Copier après la connexion

8. Broadcasting and Vectorization

NumPy allows operations between arrays of different shapes via broadcasting, a powerful mechanism for element-wise operations.

Example: Broadcasting


arr = np.array([1, 2, 3])
print(arr + 10)  # Broadcasting scalar value 10


Copier après la connexion

Expected Output:


[11 12 13]


Copier après la connexion

9. Linear Algebra in NumPy

NumPy provides many linear algebra functions, such as:

  • np.dot() – Dot product of two arrays.
  • np.matmul() – Matrix multiplication.
  • np.linalg.inv() – Inverse of a matrix.
  • np.linalg.det() – Determinant of a matrix.
  • np.linalg.eig() – Eigenvalues and eigenvectors.

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
dot_product = np.dot(A, B)
matrix_mult = np.matmul(A, B)
inv_A = np.linalg.inv(A)
det_A = np.linalg.det(A)


Copier après la connexion

Expected Output:


Dot product: [[19 22]
              [43 50]]
Matrix multiplication: [[19 22]
                        [43 50]]
Inverse of A: [[-2.   1. ]
               [ 1.5 -0.5]]
Determinant of A: -2.0


Copier après la connexion

10. Other Useful Functions

Sorting

  • np.sort(arr) – Returns a sorted array.

arr = np.array([3, 1, 2])
sorted_arr = np.sort(arr)


Copier après la connexion

Expected Output:


[1 2 3]


Copier après la connexion
Copier après la connexion

Unique Values

  • np.unique(arr) – Returns the sorted unique elements of an array.

arr = np.array([1, 2, 2, 3, 3, 3])
unique_vals = np.unique(arr)


Copier après la connexion

Expected Output:


[1 2 3]


Copier après la connexion
Copier après la connexion

Stacking and Splitting

  • np.vstack() – Stacks arrays vertically.
  • np.hstack() – Stacks arrays horizontally.
  • np.split() – Splits arrays into multiple sub-arrays.

arr1 = np.array([1, 2])
arr2 = np.array([3, 4])
vstacked = np.vstack((arr1, arr2))
hstacked = np.hstack((arr1, arr2))
splits = np.split(np.array([1, 2, 3, 4]), 2)


Copier après la connexion

Expected Output:


Vertical stack: [[1 2]
                 [3 4]]
Horizontal stack: [1 2 3 4]
Splits: [array([1, 2]), array([3, 4])]


Copier après la connexion

Conclusion

NumPy is an essential library for any Python user working with large amounts of numerical data. With its efficient handling of arrays and vast range of mathematical operations, it lays the foundation for more advanced topics such as machine learning, data analysis, and scientific computing.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal