跳转至

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。

zeros_array = np.zeros((3, 4))
print(zeros_array)

3. 使用 np.ones

创建一个指定形状的数组,所有元素初始化为 1。

ones_array = np.ones((2, 3))
print(ones_array)

4. 使用 np.full

创建一个指定形状的数组,所有元素初始化为指定值。

full_array = np.full((2, 2), 7)
print(full_array)

5. 使用 np.eye

创建一个单位矩阵(对角线为1,其余为0)。

identity_matrix = np.eye(3)
print(identity_matrix)

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 函数。

arange_array = np.arange(0, 10, 2)
print(arange_array)

8. 使用 np.linspace

创建一个包含在指定间隔内均匀分布的数字的数组。

linspace_array = np.linspace(0, 1, 5)
print(linspace_array)

9. 使用 np.logspace

创建一个包含在对数间隔内均匀分布的数字的数组。

logspace_array = np.logspace(0, 2, 5)  # 10^0 to 10^2
print(logspace_array)

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

创建一个未初始化的数组,数组的内容是随机的,取决于内存的状态。

empty_array = np.empty((2, 3))
print(empty_array)

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

生成网格点坐标矩阵,常用于函数绘图。

x = np.arange(-5, 5, 1)
y = np.arange(-5, 5, 1)
xx, yy = np.meshgrid(x, y)
print(xx)
print(yy)

16. 使用 np.mgrid

生成多维网格点坐标矩阵。

mgrid_array = np.mgrid[0:5, 0:5]
print(mgrid_array)

17. 使用 np.ogrid

生成开放式网格点坐标矩阵,返回的是稀疏矩阵。

ogrid_array = np.ogrid[0:5, 0:5]
print(ogrid_array)

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

从现有数组创建副本。

original_array = np.array([1, 2, 3])
copy_array = np.copy(original_array)
print(copy_array)

这些方法涵盖了创建 NumPy 数组的各种情况和需求,通过选择合适的方法,可以有效地初始化和操作数组,从而更好地进行数据处理和科学计算。

评论