NumPy(数值Python)是Python中科学计算的基础库。它增加了对大型多维数组和矩阵的支持,以及大量数学函数,可以有效地对这些数组进行操作。 NumPy 广泛用于数据分析、机器学习、深度学习和数值计算。
在使用 NumPy 之前,必须将库导入到您的 Python 环境中。
import numpy as np
NumPy 数组是该库的核心。它们提供快速高效的大型数据集存储并支持矢量化操作。
在 NumPy 中创建数组有多种方法:
# 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]]]
这些函数创建具有预定义值的数组。
# 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.]]
NumPy 提供了多种生成随机数的方法。
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]]
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
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]]
NumPy 数组提供了访问、切片和修改数据的强大方法,使您能够高效地使用 1D、2D 和 3D 数组。在本节中,我们将探讨如何使用索引和切片来访问元素和修改数组。
您可以使用方括号 [ ] 访问数组的元素。索引适用于任何维度的数组,包括 1D、2D 和 3D 数组。
您可以通过指定索引来访问一维数组的各个元素。
arr = np.array([1, 2, 3, 4]) print(arr[1]) # Access second element
预期输出:
2
在二维数组中,您可以通过指定行索引和列索引来访问元素。格式为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 数组,您需要指定三个索引:深度、行和列。格式为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。起始索引包含在内,而停止索引不包含。
您可以通过指定开始、停止和步长索引来对一维数组进行切片。
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]
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]]
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 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]
You can also modify arrays by adding, removing, or altering elements using various functions.
You can append or insert elements into arrays with the following methods:
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]
To remove elements from an array, you can use np.delete().
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]
NumPy supports element-wise operations, broadcasting, and a variety of useful mathematical functions.
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]
These functions return a single value for an entire array.
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
NumPy allows operations between arrays of different shapes via broadcasting, a powerful mechanism for element-wise operations.
arr = np.array([1, 2, 3]) print(arr + 10) # Broadcasting scalar value 10
Expected Output:
[11 12 13]
NumPy provides many linear algebra functions, such as:
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
arr = np.array([3, 1, 2]) sorted_arr = np.sort(arr)
Expected Output:
[1 2 3]
arr = np.array([1, 2, 2, 3, 3, 3]) unique_vals = np.unique(arr)
Expected Output:
[1 2 3]
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])]
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中文网其他相关文章!