#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()
.