在Python的数据科学世界里,Numpy是处理数值计算的核心工具,尤其是数组操作。如果你刚开始接触Numpy,学会几个基础又常用的函数会让你事半功倍。今天我们就来重点学习两个最基础的Numpy函数:arangezeros,它们能帮你快速创建数值数组,是后续学习更复杂Numpy操作的基石。

Numpy是什么?

简单来说,Numpy提供了高效的多维数组对象和数学函数,能让你像操作列表一样处理大量数据,但速度更快、功能更强。对于数据分析、机器学习等任务,数组操作是基础,而arangezeros是入门必学的工具。

一、arange:快速生成有序数组

作用

arange函数可以生成一个有规律的有序数组,类似于Python内置的range函数,但返回的是Numpy数组(更适合数值计算)。

语法

numpy.arange([start, ]stop, [step, ]dtype=None)
  • start:数组的起始值,默认为0(包含在数组中)。
  • stop:数组的结束值(不包含在数组中),是必须参数。
  • step:相邻两个元素的间隔(步长),默认为1
  • dtype:数组的数据类型(如intfloat等),默认根据输入自动推断。

常用示例

  1. 默认参数(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]
  1. 指定start和step
    如果你想自定义起始值和步长:
   arr = np.arange(2, 10, 2)  # start=2, step=2, stop=10
   print(arr)  # 输出:[2 4 6 8]

注意:stop是结束条件(不包含),所以10不会被包含,最后一个元素是8

  1. 指定数据类型
    如果需要整数数组,可以用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

常用示例

  1. 一维数组(shape为整数)
    生成长度为n的全0数组:
   arr = np.zeros(5)  # shape=5,表示一维数组,长度5
   print(arr)  # 输出:[0. 0. 0. 0. 0.]  # 默认是float类型
  1. 二维数组(shape为元组)
    生成m行n列的二维全0数组:
   arr = np.zeros((2, 3))  # shape=(2,3),2行3列
   print(arr)
   # 输出:
   # [[0. 0. 0.]
   #  [0. 0. 0.]]
  1. 指定整数类型的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数组,看看结果是否正确~

小夜