> 백엔드 개발 > 파이썬 튜토리얼 > Numpy 치트 시트

Numpy 치트 시트

DDD
풀어 주다: 2024-10-04 06:08:29
원래의
1112명이 탐색했습니다.

Numpy Cheat Sheet

NumPy 종합 가이드: 최고의 치트 시트

NumPy(NumPy)는 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) – 0으로 채워진 주어진 모양의 새로운 배열을 반환합니다.
  • 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 배열의 경우 깊이, 행, 열의 세 가지 인덱스를 지정해야 합니다. 형식은 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.

위 내용은 Numpy 치트 시트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿