调用np.zeros()报错无法将多维形状解释为数据类型该如何修复
问题原因
np.zeros() 函数的参数定义为 np.zeros(shape, dtype=float, order='C'),其中第一个入参shape要求是表示输出数组维度的元组:
- 你直接写
np.zeros(3, 2)时,会被函数识别为shape=3、dtype=2,第二个参数2被当作数据类型参数解析,自然触发类型错误。 - 你写的
np.zeros(3,)可以正常运行,是因为末尾的逗号会把3,隐式识别为单元素元组,等价于np.zeros((3,)),没有传入第二个dtype参数时会使用默认的float类型,所以可以正常返回长度为3的一维全0数组。
修复方法
如果你想要得到3行2列的全0数组,把维度参数用括号包裹为元组传入即可:
print(np.zeros((3, 2)))
输出结果为:
[[0. 0.] [0. 0.] [0. 0.]]
如果你预期的是你示例中给出的3行3列全0数组,传入对应维度的元组即可:
print(np.zeros((3, 3)))
输出结果和你预期的一致:
[[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
内容的提问来源于stack exchange,提问作者Dotcom
相关产品推荐
相关产品推荐

