python数据分析-numpy数组基础
NumPy数组创建指南:从Python杂货铺到数据科学军营
引言:为什么我们需要NumPy?
想象一下,你正在用Python列表存储100万个温度数据。每个温度值都被Python当作一个独立的对象——有类型检查、引用计数等“豪华包装”。这就像一个杂货铺,每颗糖果都有独立包装,虽然精致但极其浪费空间!
# Python列表:每个元素都是独立对象 |
这时,NumPy数组登场了——它像一支纪律严明的军队,所有士兵(数据)整齐划一,共享同一种“军装”(数据类型),内存效率提升数十倍!
一、创建你的第一个NumPy数组
1.1 基础创建:从列表到数组
import numpy as np # 标准导入,别名np是行业惯例 |
注意:NumPy数组打印时没有逗号分隔,这是它与Python列表的视觉身份证!
1.2 同化定理:NumPy的”沉默暴君”
NumPy数组有个重要特性:所有元素必须是同一种数据类型。当你试图混搭时,NumPy会默默地进行类型转换:
# 实验1:浮点数闯入整数王国 |
规律总结:低级类型(整数)放入高级类型(浮点)数组会被”提拔”,反之则被”降级”。
二、数组转化:NumPy的变形记
2.1 显式转化:astype()方法
# 整数数组 → 浮点数组 |
重要提示:astype()会创建新数组,原数组保持不变!
2.2 隐式转化:运算中的类型提升
# 整数数组遇到浮点数 |
规律:只要运算中出现浮点数,整数数组就会”绅士地”转换为浮点数组。
三、数组维度:从一维到多维世界
3.1 理解数组形状
# 一维数组 - 一条直线 |
形状解读:(行, 列, 深度, ...) 从外向内解读,就像俄罗斯套娃!
3.2 快速创建特殊数组
# 全是1的数组 - NumPy的"复制粘贴" |
3.3 数组变形:reshape()的魔法
# 一维变二维 - 数组的"七十二变" |
-1的妙用:告诉NumPy”你帮我算这个维度”,就像说”剩下的都归你”!
四、更多创建技巧
4.1 复制与视图
# 完全复制 - 独立个体 |
4.2 随机数组
# 随机数种子 - 确保可重复性 |
五、总结:NumPy数组创建工具箱
| 方法 | 用途 | 示例 |
|---|---|---|
np.array() |
从列表/元组创建 | np.array([1,2,3]) |
np.arange() |
创建序列 | np.arange(10) |
np.linspace() |
创建等差数组 | np.linspace(0,1,5) |
np.ones() |
全1数组 | np.ones((3,4)) |
np.zeros() |
全0数组 | np.zeros((2,3)) |
np.eye() |
单位矩阵 | np.eye(3) |
np.full() |
填充数组 | np.full((2,2), 7) |
np.random |
随机数组 | np.random.rand(3,4) |
核心要点回顾:
- 同质性是王道:NumPy数组所有元素类型必须相同
- 类型转换自动发生:低级类型向高级类型看齐
- 形状是数组的身份证:
(行, 列, 深度)从外向内读 - reshape很智能:用
-1让NumPy自动计算维度 - 视图与副本:理解两者区别,避免意外修改
NumPy数组就像数据科学的乐高积木——标准化、可组合、高效率。掌握这些创建技巧,你就拿到了打开高效数据计算大门的钥匙!
趣味事实:在处理100万数据点时,NumPy数组比Python列表快约50倍,内存节省约75%!这可不是小数目,而是”咖啡时间去喝杯咖啡,而不是看着进度条发呆”的区别。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Static Blog!
评论
