NumPy创建数组
NumPy 提供了多种方法来创建 ndarray
数组,这里详细列出并示例这些方法。
1. 使用 np.array
从现有的数据(如列表、元组等)创建数组。
import numpy as np
# 从列表创建一维数组
array_from_list = np.array([1, 2, 3, 4])
print(array_from_list)
# 从嵌套列表创建二维数组
array_from_nested_list = np.array([[1, 2, 3], [4, 5, 6]])
print(array_from_nested_list)
2. 使用 np.zeros
创建一个指定形状的数组,所有元素初始化为 0。
3. 使用 np.ones
创建一个指定形状的数组,所有元素初始化为 1。
4. 使用 np.full
创建一个指定形状的数组,所有元素初始化为指定值。
5. 使用 np.eye
创建一个单位矩阵(对角线为1,其余为0)。
6. 使用 np.diag
从已有数组的对角线创建对角矩阵,或提取对角线。
# 从对角线元素创建对角矩阵
diag_matrix = np.diag([1, 2, 3])
print(diag_matrix)
# 提取已有矩阵的对角线
existing_matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
diag_elements = np.diag(existing_matrix)
print(diag_elements)
7. 使用 np.arange
创建一个包含一系列数字的数组,类似于 Python 的 range
函数。
8. 使用 np.linspace
创建一个包含在指定间隔内均匀分布的数字的数组。
9. 使用 np.logspace
创建一个包含在对数间隔内均匀分布的数字的数组。
10. 使用 np.random
使用 NumPy 的随机数模块创建数组。
# 生成0到1之间均匀分布的随机数数组
random_array = np.random.rand(3, 3)
print(random_array)
# 生成标准正态分布的随机数数组
random_normal_array = np.random.randn(3, 3)
print(random_normal_array)
# 生成指定范围内的随机整数数组
random_int_array = np.random.randint(0, 10, (3, 3))
print(random_int_array)
11. 使用 np.empty
创建一个未初始化的数组,数组的内容是随机的,取决于内存的状态。
12. 使用 np.empty_like
, np.zeros_like
, np.ones_like
从已有数组的形状创建新数组,元素值分别未初始化、全为0、全为1。
existing_array = np.array([[1, 2, 3], [4, 5, 6]])
empty_like_array = np.empty_like(existing_array)
print(empty_like_array)
zeros_like_array = np.zeros_like(existing_array)
print(zeros_like_array)
ones_like_array = np.ones_like(existing_array)
print(ones_like_array)
13. 使用 np.fromfunction
根据函数生成数组,函数输入是数组的坐标。
def func(i, j):
return i + j
from_function_array = np.fromfunction(func, (3, 3), dtype=int)
print(from_function_array)
14. 使用 np.fromfile
, np.loadtxt
, np.genfromtxt
从文件中加载数据创建数组。
# 假设文件 'data.txt' 包含:
# 1.0 2.0 3.0
# 4.0 5.0 6.0
# 使用 np.loadtxt 加载数据
data = np.loadtxt('data.txt')
print(data)
# 使用 np.genfromtxt 加载数据,支持缺失值
data_with_nan = np.genfromtxt('data_with_nan.txt', delimiter=',')
print(data_with_nan)
15. 使用 np.meshgrid
生成网格点坐标矩阵,常用于函数绘图。
16. 使用 np.mgrid
生成多维网格点坐标矩阵。
17. 使用 np.ogrid
生成开放式网格点坐标矩阵,返回的是稀疏矩阵。
18. 使用 np.bmat
从块数组创建一个大的 2D 数组。
A = np.mat('1 2; 3 4')
B = np.mat('5 6; 7 8')
block_matrix = np.bmat([[A, B], [B, A]])
print(block_matrix)
19. 使用 np.copy
从现有数组创建副本。
这些方法涵盖了创建 NumPy 数组的各种情况和需求,通过选择合适的方法,可以有效地初始化和操作数组,从而更好地进行数据处理和科学计算。