为什么科学记谱法在Numpy中不起作用

时间:2017-06-20 15:52:04

标签: python-3.x numpy ipython

为什么在Ipython中会这样做:

In [1]:    1E6
Out[1]: 1000000

工作但是:

In[2]: import numpy as np
       rng = np.random.RandomState(42)

In[3]: rng.rand([1E6])

产生:TypeError:' float' object不能解释为整数

但是,如果我输入:

In[4]: rng.rand(1000000)

有效吗?

1 个答案:

答案 0 :(得分:1)

请记住,科学也可用于表示微小的数字:

1E-3

所以在这里使用float是有道理的。如果您现在检查1E6的类型,您会注意到

type(1E6)  # <class 'float'>

,而

type(1000000)  # <class 'int'>

你的代码抱怨

TypeError: 'float' object cannot be interpreted as an integer

因此,如果您明确地将1E6投射到int,它将按预期工作

rng.rand(int(1E6))