Python NumPy Arange Dtpye? почему преобразование в целое число было равно нулю - PullRequest
0 голосов
/ 04 мая 2018

x = np.arange (0,3, 12,5, 0,6)

печать (х)

[0,3 0,9 1,5 2,1 2,7 3,3 3,9 4,5 5,1 5,7 6,3 6,9 7,5 8,1 8,7 9,3 9,9 10,5 11,1 11,7 12,3]

x = np.arange (0,3, 12,5, 0,6, int)

печать (х)

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Сначала давайте пропустим сложность шага с плавающей запятой и используем простые целые числа start и stop:

In [141]: np.arange(0,5)
Out[141]: array([0, 1, 2, 3, 4])
In [142]: np.arange(0,5, dtype=int)
Out[142]: array([0, 1, 2, 3, 4])
In [143]: np.arange(0,5, dtype=float)
Out[143]: array([0., 1., 2., 3., 4.])
In [144]: np.arange(0,5, dtype=complex)
Out[144]: array([0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j, 4.+0.j])
In [145]: np.arange(0,5, dtype='datetime64[D]')
Out[145]: 
array(['1970-01-01', '1970-01-02', '1970-01-03', '1970-01-04',
       '1970-01-05'], dtype='datetime64[D]')

Даже bool работают, в пределах определенного диапазона:

In [149]: np.arange(0,1, dtype=bool)
Out[149]: array([False])
In [150]: np.arange(0,2, dtype=bool)
Out[150]: array([False,  True])
In [151]: np.arange(0,3, dtype=bool)
ValueError: no fill-function for data-type.
In [156]: np.arange(0,3).astype(bool)
Out[156]: array([False,  True,  True])

Есть 2 возможных логических значения, поэтому запрос большего должен привести к некоторой ошибке.

arange - это скомпилированный код, поэтому мы не можем легко изучить его логику (но вы можете искать код C на github).

Примеры показывают, что он в некотором смысле преобразовывает параметры в соответствующий dtype и выполняет итерацию для этого. Он не просто генерирует диапазон и в конце преобразует его в dtype.

0 голосов
/ 04 мая 2018

Когда указано dtype = int, оно преобразует начало, останов и шаг в одно и то же.

Итак, оно становится int(start), int(stop), int(step).

Следовательно, в вашем случае, когда указан тип dtype = int, начало и шаг остаются равными 0, и вы получаете массив, полный 0 с.

Эта проблема обсуждалась с объяснением здесь:

https://github.com/numpy/numpy/issues/2457

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...