ナンピーチートシート

DDD
DDDオリジナル
2024-10-04 06:08:291092ブラウズ

Numpy Cheat Sheet

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

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


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

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


import numpy as np



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]]])


期待される出力:


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



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)


期待される出力:


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.]]



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))


期待される出力:


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



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)


期待される出力:


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


配列の再形成

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

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


期待される出力:


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



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

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

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

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

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

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


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


期待される出力:


2


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


期待される出力:


6


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


期待される出力:


6



スライス

スライスは、より大きな配列から部分配列を抽出するために使用されます。スライスの構文は 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)


Expected Output:


[20 30 40]


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


Expected Output:


[[40 50]
 [70 80]]


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


Expected Output:


[[5 6]]



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


Expected Output:


[25 30]



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


Expected Output:


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


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)


Expected Output:


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



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


Expected Output:


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


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))


Expected Output:


15


3.0
3.0
1.4142135623730951
1 5



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


Expected Output:


[11 12 13]



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)


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



10. Other Useful Functions

Sorting

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

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


Expected Output:


[1 2 3]


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)


Expected Output:


[1 2 3]


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)


Expected Output:


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



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.

以上がナンピーチートシートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。