在Python的数据科学世界里,Numpy是处理数值计算的核心工具,尤其是数组操作。如果你刚开始接触Numpy,学会几个基础又常用的函数会让你事半功倍。今天我们就来重点学习两个最基础的Numpy函数:arange和zeros,它们能帮你快速创建数值数组,是后续学习更复杂Numpy操作的基石。
Numpy是什么?¶
简单来说,Numpy提供了高效的多维数组对象和数学函数,能让你像操作列表一样处理大量数据,但速度更快、功能更强。对于数据分析、机器学习等任务,数组操作是基础,而arange和zeros是入门必学的工具。
一、arange:快速生成有序数组¶
作用¶
arange函数可以生成一个有规律的有序数组,类似于Python内置的range函数,但返回的是Numpy数组(更适合数值计算)。
语法¶
numpy.arange([start, ]stop, [step, ]dtype=None)
- start:数组的起始值,默认为
0(包含在数组中)。 - stop:数组的结束值(不包含在数组中),是必须参数。
- step:相邻两个元素的间隔(步长),默认为
1。 - dtype:数组的数据类型(如
int、float等),默认根据输入自动推断。
常用示例¶
- 默认参数(start=0,step=1)
如果只给stop参数,会从0开始,步长1,到stop-1结束:
import numpy as np
arr = np.arange(5) # start=0, step=1, stop=5
print(arr) # 输出:[0 1 2 3 4]
- 指定start和step
如果你想自定义起始值和步长:
arr = np.arange(2, 10, 2) # start=2, step=2, stop=10
print(arr) # 输出:[2 4 6 8]
注意:stop是结束条件(不包含),所以10不会被包含,最后一个元素是8。
- 指定数据类型
如果需要整数数组,可以用dtype=int:
arr = np.arange(0, 6, 1, dtype=int) # 显式指定整数类型
print(arr) # 输出:[0 1 2 3 4 5]
注意事项¶
- stop不包含:
np.arange(0, 5)生成0-4,而不是0-5。 - 步长为小数时的精度问题:如果
step是小数(如0.1),可能因浮点数精度导致结果偏差,建议尽量用整数步长。
二、zeros:快速生成全0数组¶
作用¶
zeros函数可以生成一个所有元素都是0的数组,常用于初始化矩阵、填充占位符等场景。
语法¶
numpy.zeros(shape, dtype=float, order='C')
- shape:数组的形状(必填),可以是整数(表示一维数组长度)或元组(表示多维数组形状)。
- dtype:数组的数据类型,默认为
float(浮点数),也可指定int(整数)。 - order:内存中数组的存储顺序(行优先
C或列优先F),对初学者无需关注,默认C。
常用示例¶
- 一维数组(shape为整数)
生成长度为n的全0数组:
arr = np.zeros(5) # shape=5,表示一维数组,长度5
print(arr) # 输出:[0. 0. 0. 0. 0.] # 默认是float类型
- 二维数组(shape为元组)
生成m行n列的二维全0数组:
arr = np.zeros((2, 3)) # shape=(2,3),2行3列
print(arr)
# 输出:
# [[0. 0. 0.]
# [0. 0. 0.]]
- 指定整数类型的0数组
如果需要整数类型的0数组(而非默认的浮点数),用dtype=int:
arr = np.zeros(3, dtype=int) # 一维,3个元素,整数0
print(arr) # 输出:[0 0 0]
注意事项¶
- shape参数必须明确:一维数组可直接传整数(如
5),多维数组必须传元组(如(2,3))。 - 默认浮点数:
zeros默认生成float64类型数组,如果需要整数0,一定要指定dtype=int。
总结¶
arange帮你快速生成有序的数值数组(类似列表但更高效),zeros帮你快速初始化全0数组(常用于矩阵或占位)。这两个函数是Numpy入门的“刚需”,掌握它们能让你在后续处理数据时事半功倍。
后续可以继续学习ones(全1数组)、linspace(均匀分布数组)等进阶函数,逐步构建你的Numpy技能体系。
小练习:尝试用arange生成[3, 6, 9, 12],用zeros生成一个4行5列的整数0数组,看看结果是否正确~