Python阿兰奇dtpye?为什么转换成整数是z

2024-04-19 22:22:14 发布

您现在位置:Python中文网/ 问答频道 /正文

x=np.arange公司(0.3,12.5,0.6)

打印(x)

9.7.1.3.7.1.3.9.5.1.7.5.3.3

x=np.arange公司(0.3,12.5,0.6,内景)

打印(x)

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]


Tags: np公司arange内景
2条回答

指定dtype = int时,它将开始、停止和步进转换为相同的。在

所以,它变成int(start), int(stop), int(step)。在

因此,在您的例子中,当指定了dtype=int时,start和step保持为0,并且得到一个满是0的数组

这个问题在这里已经讨论过,并作了解释:

https://github.com/numpy/numpy/issues/2457

首先让我们跳过浮点步骤的复杂性,使用一个简单的整数开始和结束:

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也能在一定范围内工作:

^{pr2}$

有两个可能的布尔值,所以要求更多应该会产生某种错误。在

arange是经过编译的代码,因此我们无法轻易检查其逻辑(但是欢迎您在github上搜索C代码)。在

示例表明,在某种意义上,它确实将参数转换为相应的dtype,并在此基础上执行迭代。它并不是简单地生成范围并在末尾转换为dtype。在

相关问题 更多 >