Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当与列表相乘时,为什么float64转换为int?_Python_Numpy - Fatal编程技术网

Python 当与列表相乘时,为什么float64转换为int?

Python 当与列表相乘时,为什么float64转换为int?,python,numpy,Python,Numpy,将numpy浮点与列表相乘时,浮点将自动转换为int >>> import numpy as np >>> a = [1, 2, 3] >>> np.float64(2.0) * a ### This behaves as 2 * a [1, 2, 3, 1, 2, 3] 一个普通的浮点表示一个类型错误 >>> 2.0 * a ### This does not Traceback (most recent call la

将numpy浮点与列表相乘时,浮点将自动转换为int

>>> import numpy as np
>>> a = [1, 2, 3]
>>> np.float64(2.0) * a ### This behaves as 2 * a
[1, 2, 3, 1, 2, 3]
一个普通的浮点表示一个类型错误

>>> 2.0 * a ### This does not
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'float'
>>2.0*a####这不是
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:无法将序列与“float”类型的非int相乘
但是,numpy浮点不能用于索引

>>> a[np.float64(2.0)]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not numpy.float64
>a[np.float64(2.0)]
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:列表索引必须是整数,而不是numpy.float64

这种行为背后的逻辑是什么?

您在NumPy遇到了一个问题。GitHub问题去年已经解决,但其行为仍保留在NumPy版本1.9.1中。

那么,您想知道为什么float会变成int,还是想知道所有这些背后的逻辑?@PythonMaster我想知道float64与float的不同之处,以及为什么在第一个示例中它被转换为int,而在第三个示例中却没有。我似乎根本不理解您提出的问题。问题是为什么,例如,
np.float64(2.0)*[1,2,3]
2.0*[1,2,3]
没有相同的行为。另请参见,初学者程序中的错误是由您观察到的相同奇怪行为引起的。我认为这是Numpy的一个错误。我在Numpy邮件列表上找到了我的名字,但没有得到回复。