numpy.rand.seed()的数据类型

时间:2019-04-11 17:40:22

标签: python numpy

试图通过命令行选项输入种子运行时,因此想了解numpy.rand.seed()的数据类型是什么

2 个答案:

答案 0 :(得分:0)

根据https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.seed.html,它必须是整数或可转换为无符号32位整数的一维整数数组。因此,使用任何类型的整数都应该没问题。

答案 1 :(得分:0)

来自numpy docs on np.random.seed()

seed : int or 1-d array_like, optional
    Seed for RandomState. Must be convertible to 32 bit unsigned integers.

请注意当您尝试使用某些对象(例如字符串)时收到的错误消息:

In [5]: np.random.seed('1234')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
mtrand.pyx in mtrand.RandomState.seed()

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

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
<ipython-input-5-d50c476bf3fe> in <module>
----> 1 np.random.seed('1234')

mtrand.pyx in mtrand.RandomState.seed()

TypeError: Cannot cast array from dtype('<U4') to dtype('int64') according to the rule 'safe'

因此,您必须传递可以通过“安全”转换进行转换的对象。据我所知,一种简单的检查方法是使用np.can_cast(o, np.uint32)(文档here);返回True的任何内容都可以使用。但是,实际检查的内容可以在源代码here中看到,在该代码中,它使用安全转换将输入对象转换为类型为np.int64的数组,然后检查该对象是否为1-d并且值在0到2 ^ 32-1之间,然后转换为无符号长整数以用于numpy C库。

因此,单线描述可能是:任何可以“安全地强制转换为1-d int64数组,其中值在转换后最终介于0到2 ^ 32-1之间”的任何东西都可以传递到{{ 1}}。