x = np.arange(0.3,12.5,0.6)
打印(x)的
[0.3 0.9 1.5 2.1 2.7 3.3 3.9 4.5 5.1 5.7 6.3 6.9 7.5 8.1 8.7 9.3 9.9 10.5 11.1 11.7 12.3]
x = np.arange(0.3,12.5,0.6,int)
打印(x)的
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
答案 0 :(得分:3)
指定dtype = int
时,它会将开始,停止和步骤转换为相同的内容。
因此,它变为int(start), int(stop), int(step)
。
因此,在你的情况下,当指定dtype = int时,start和step保持为0并且你得到一个满0的数组。
此问题已在此处进行了解释:
答案 1 :(得分:2)
首先让我们跳过浮动步骤的复杂性,并使用一个简单的整数开始和停止:
In [141]: np.arange(0,5)
Out[141]: array([0, 1, 2, 3, 4])
In [142]: np.arange(0,5, dtype=int)
Out[142]: array([0, 1, 2, 3, 4])
In [143]: np.arange(0,5, dtype=float)
Out[143]: array([0., 1., 2., 3., 4.])
In [144]: np.arange(0,5, dtype=complex)
Out[144]: array([0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j, 4.+0.j])
In [145]: np.arange(0,5, dtype='datetime64[D]')
Out[145]:
array(['1970-01-01', '1970-01-02', '1970-01-03', '1970-01-04',
'1970-01-05'], dtype='datetime64[D]')
即使bool
工作,也在一定范围内:
In [149]: np.arange(0,1, dtype=bool)
Out[149]: array([False])
In [150]: np.arange(0,2, dtype=bool)
Out[150]: array([False, True])
In [151]: np.arange(0,3, dtype=bool)
ValueError: no fill-function for data-type.
In [156]: np.arange(0,3).astype(bool)
Out[156]: array([False, True, True])
有两种可能的布尔值,因此要求更多应该会产生某种错误。
arange
是编译代码,因此我们无法轻易检查其逻辑(但欢迎您在github上搜索C代码)。
这些示例表明,在某种意义上,它确实将参数转换为相应的dtype
,并对其执行迭代。它不会简单地生成范围并在最后转换为dtype。