Из нудистских документов по 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)
(документы здесь ); все, что вернет True
, будет здесь пригодно. Однако то, что фактически проверено, можно увидеть в исходном коде здесь , где он преобразует входной объект в массив типа np.int64
с безопасным приведением, а затем проверяет, что объект является 1-й и что значения находятся в диапазоне от 0 до 2 ^ 32 - 1, перед тем, как привести их к беззнаковому длинному для использования в пустой библиотеке C.
Таким образом, однострочное описание может быть таким: любое «безопасное приведение к массиву 1-d int64
, где значения заканчиваются между 0 и 2 ^ 32 - 1 после преобразования», может быть передано в np.random.seed()
.