Тип данных для numpy.rand.seed()

#python #numpy

#python #numpy

Вопрос:

Пытаюсь ввести начальную среду выполнения через параметр командной строки, поэтому хотел понять, каков тип данных numpy.rand.seed()

Комментарии:

1. Просто дайте ему целое число. Значение командной строки будет строкой, поэтому сначала преобразуйте его в целое число. например. np.random.seed(int('100101')) работает.

Ответ №1:

Согласно https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.seed.html это должно быть целое число или одномерный массив целых чисел, преобразуемый в 32-разрядное целое число без знака. Так что вы должны быть в порядке с любым целым числом.

Ответ №2:

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

Таким образом, однострочное описание может быть следующим: может быть передано что-либо «безопасное приведение к одномерному int64 массиву, где значения заканчиваются между 0 и 2 ^ 32 — 1 после приведения» np.random.seed() .