NumPy中np.array()使用方括号[]、np.zeros()使用圆括号()的语法差异原因
NumPy中np.array()使用方括号[]、np.zeros()使用圆括号()的语法差异原因
这个问题问得特别到位!其实这俩函数的语法差异完全源于它们接收的参数类型和核心功能不同,咱们掰开揉碎了说:
先说
np.array()
它的核心作用是把一个已有的可迭代对象(比如Python列表、元组)转换成NumPy数组。你写的np.array([1, 2, 3])里,[1, 2, 3]本身就是一个Python列表——也就是你要转换的原始数据容器。其实你传元组也行,比如np.array((1, 2, 3))同样能生成一模一样的数组,只不过日常写代码时,列表(方括号)是最常用的可迭代对象写法,慢慢就成了约定俗成的习惯。再看
np.zeros()
它的功能是创建一个指定形状的全零数组,不需要你传入现成的数据,只需要告诉它数组的“形状规格”。这个形状参数要求是一个整数或者整数组成的序列(通常用元组)。你写的np.zeros((2, 3))里,(2, 3)是一个元组,代表数组是2行3列的结构。早期NumPy其实支持直接传多个整数(比如np.zeros(2, 3)),但现在官方更推荐用元组包裹,这样当维度变多(比如三维数组(2, 3, 4))时,语法会更清晰,不容易产生歧义。
一句话总结
np.array()要的是待转换的原始数据容器(列表/元组都可,方括号只是列表的写法),而np.zeros()要的是描述数组形状的参数序列(元组是标准格式,用圆括号包裹),这就是两者语法差异的根本原因。
备注:内容来源于stack exchange,提问作者utkarsh-roy
相关产品推荐
相关产品推荐

