创建Numpy数组np.array(列表)
让我们来开始认识学习——创建Numpy数组np.array(列表)吧!!!
np.array(列表)
是 NumPy 中最基本的数组创建方法,用于将 Python 列表(或嵌套列表)转换为 NumPy 数组。以下是详细介绍:
1. 功能
将 Python 列表(list
)或嵌套列表转换为 NumPy 数组,支持多维结构。
2. 基本语法
import numpy as np
# 从一维列表创建数组
arr1d = np.array([1, 2, 3, 4])
# 从嵌套列表创建二维数组(矩阵)
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
# 从嵌套列表创建三维数组
arr3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
import numpy as np
# 从一维列表创建数组
arr1d = np.array([1, 2, 3, 4])
# 从嵌套列表创建二维数组(矩阵)
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
# 从嵌套列表创建三维数组
arr3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
3. 关键特性
3.1 数据类型(dtype)
- 数组元素必须为同一数据类型(如整数、浮点数)。
- NumPy 会自动推断数据类型,也可通过
dtype
参数显式指定:# 自动推断为整数
arr_int = np.array([1, 2, 3]) # dtype='int64'# 显式指定为浮点数
arr_float = np.array([1, 2, 3], dtype=float) # dtype='float64' -
# 自动推断为整数 arr_int = np.array([1, 2, 3]) # dtype='int64' # 显式指定为浮点数 arr_float = np.array([1, 2, 3], dtype=float) # dtype='float64'
3.2 多维结构
- 二维数组:嵌套列表的每个子列表代表一行。
-
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d.shape) # 输出: (2, 3) → 2行3列arr2d = np.array([[1, 2, 3], [4, 5, 6]]) print(arr2d.shape) # 输出: (2, 3) → 2行3列
- 三维数组:嵌套列表的每个子列表代表一个二维数组。
arr3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr3d.shape) # 输出: (2, 2, 2) → 2个2×2矩阵arr3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) print(arr3d.shape) # 输出: (2, 2, 2) → 2个2×2矩阵
4. 示例代码
4.1 一维数组
import numpy as np
# 从列表创建一维数组
a = np.array([10, 20, 30, 40])
print(a) # 输出: [10 20 30 40]
print(a.shape) # 输出: (4,)
print(a.dtype) # 输出: int64
import numpy as np
# 从列表创建一维数组
a = np.array([10, 20, 30, 40])
print(a) # 输出: [10 20 30 40]
print(a.shape) # 输出: (4,)
print(a.dtype) # 输出: int64
4.2 二维数组(矩阵)
# 从嵌套列表创建二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)
# 输出:
# [[1 2 3]
# [4 5 6]]
print(b.shape) # 输出: (2, 3)
# 从嵌套列表创建二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)
# 输出:
# [[1 2 3]
# [4 5 6]]
print(b.shape) # 输出: (2, 3)
4.3 指定数据类型
# 创建浮点数数组
c = np.array([1.5, 2.7, 3.9])
print(c.dtype) # 输出: float64
# 强制转换为整数(截断小数部分)
d = np.array([1.5, 2.7, 3.9], dtype=int)
print(d) # 输出: [1 2 3]
# 创建浮点数数组
c = np.array([1.5, 2.7, 3.9])
print(c.dtype) # 输出: float64
# 强制转换为整数(截断小数部分)
d = np.array([1.5, 2.7, 3.9], dtype=int)
print(d) # 输出: [1 2 3]
5. 与其他创建方式的对比
方法 | 用途 | 示例 |
---|---|---|
np.array(列表) | 将现有列表转换为数组 | np.array([1, 2, 3]) |
np.zeros(shape) | 创建全 0 数组 | np.zeros((2, 3)) |
np.ones(shape) | 创建全 1 数组 | np.ones(5) |
np.arange(start, stop, step) | 创建等差数列 | np.arange(0, 10, 2) |
np.linspace(start, stop, num) | 创建等距分布的数组 | np.linspace(0, 1, 5) |
6. 常见问题
6.1 列表长度不一致(无法形成规则多维数组)
# 错误示例:子列表长度不一致
bad_arr = np.array([[1, 2], [3, 4, 5]]) # 会创建包含列表的一维数组
print(bad_arr) # 输出: array([list([1, 2]), list([3, 4, 5])], dtype=object)
# 错误示例:子列表长度不一致
bad_arr = np.array([[1, 2], [3, 4, 5]]) # 会创建包含列表的一维数组
print(bad_arr) # 输出: array([list([1, 2]), list([3, 4, 5])], dtype=object)
6.2 数据类型自动转换
# 整数与浮点数混合,自动转换为浮点数
mixed_arr = np.array([1, 2.5, 3])
print(mixed_arr) # 输出: [1. 2.5 3. ]
print(mixed_arr.dtype) # 输出: float64
# 整数与浮点数混合,自动转换为浮点数
mixed_arr = np.array([1, 2.5, 3])
print(mixed_arr) # 输出: [1. 2.5 3. ]
print(mixed_arr.dtype) # 输出: float64
7. 应用场景
- 数据科学:处理表格数据、图像像素等结构化数据。
- 机器学习:作为模型输入 / 输出的数据容器。
- 数值计算:高效执行数学运算(如矩阵乘法)。
最后,我们通过 np.array()
,可以灵活地将 Python 列表转换为高性能的 NumPy 数组,为后续的数据分析和计算奠定基础。