
第三章 Ndarray 对象和数组创建
Ndarray 是 NumPy 的核心数据结构,本质是存储单一数据类型的多维数组,也是后续所有操作的基础。它具备高效的存储和运算能力,能够支持批量数据处理,区别于 Python 原生列表(可存储多种数据类型、运算效率低)。
int32、float64、bool 等。import numpy as np
# 一维数组
a = np.array([1, 2, 3])
print(a) # [1 2 3]
# 二维数组
b = np.array([[1, 2], [3, 4]])
print(b)
# [[1 2]
# [3 4]]注意:
np.array()不会复制数据(除非必要),但会尝试推断 dtype。
c = np.array([1, 2, 3], dtype=np.float32)
print(c.dtype) # float32np.zeros(shape):全 0 数组z = np.zeros((2, 3))
# [[0. 0. 0.]
# [0. 0. 0.]]np.ones(shape):全 1 数组o = np.ones((2, 2), dtype=int)
# [[1 1]
# [1 1]]np.empty(shape):未初始化的数组(内容随机)e = np.empty((2, 2))
# 内容不确定,仅分配内存np.full(shape, fill_value):填充指定值f = np.full((2, 3), 7)
# [[7 7 7]
# [7 7 7]]np.arange(start, stop, step):类似 Python 的 range,但返回 ndarrayr = np.arange(0, 10, 2) # [0 2 4 6 8]注意:
stop不包含。
np.linspace(start, stop, num):生成等间距的 num 个点(包含 stop)l = np.linspace(0, 1, 5)
# [0. 0.25 0.5 0.75 1. ]np.logspace(start, stop, num, base=10):对数等间距log_arr = np.logspace(0, 2, 5) # 10^0 到 10^2,5 个点
# [ 1. 3.16227766 10. 31.6227766 100. ]np.eye(N, M=None, k=0):单位矩阵(对角为 1)I = np.eye(3)
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]k 表示对角线偏移(k=1 为上对角,k=-1 为下对角)np.identity(n):n×n 单位矩阵(是 eye(n) 的简写)np.diag(v, k=0):从向量构造对角矩阵,或提取对角线v = [1, 2, 3]
d = np.diag(v)
# [[1 0 0]
# [0 2 0]
# [0 0 3]]
# 反过来:提取对角线
diag_vals = np.diag(d) # [1 2 3]np.random 模块)推荐使用新的随机数生成器(NumPy 1.17+):
rng = np.random.default_rng(seed=42)
# 均匀分布 [0, 1)
rand_uniform = rng.random((2, 3))
# 正态分布(均值0,标准差1)
rand_normal = rng.standard_normal((2, 2))
# 整数随机
rand_int = rng.integers(low=0, high=10, size=(3,))旧方法(仍可用,但不推荐):
np.random.rand(2, 3) # 均匀分布
np.random.randn(2, 2) # 标准正态分布
np.random.randint(0, 10, 5) # 整数np.copy(a):深拷贝a.view():视图(共享数据)np.asarray(a):如果 a 已是 ndarray,则不复制a = np.array([1, 2, 3])
b = a.view() # 修改 b 会影响 a
c = np.copy(a) # 独立副本np.loadtxt(), np.genfromtxt():读文本文件np.fromfile():读二进制文件np.fromstring():从字符串解析(已弃用,建议用 frombuffer)arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.ndim) # 维度数:2
print(arr.shape) # 形状:(2, 3)
print(arr.size) # 元素总数:6
print(arr.dtype) # 数据类型:int64(取决于平台)
print(arr.itemsize) # 每个元素字节数
print(arr.data) # 内存地址(一般不用)方法 | 说明 |
|---|---|
| 从列表/元组创建 |
| 全 0 |
| 全 1 |
| 未初始化 |
| 填充指定值 |
| 等差整数序列 |
| 等间距浮点序列 |
| 单位矩阵 |
| 对角矩阵 |
| 随机数组 |
部分代码已经上传至gitee,后续会逐步更新,主要受时间原因限制,当然自己也可以克隆到本地学习拓展。
公众号:咚咚王
《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。