Я тестировал подпрограмму numpy np.in1d()
, чтобы проверить, работает ли она должным образом, потому что мне нужно включить ее в программу. А именно я пробовал
>>> import numpy as np
>>> x = np.arange(0, 1, 0.1)
>>> y = np.arange(0.5, 1, 0.2)
>>> x
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
>>> y
array([0.5, 0.7, 0.9])
>>> np.in1d(x, y)
array([False, False, False, False, False, True, False, False, False, False])
Результат последней оценки, похоже, является ошибкой. Из того, что указано в документах , я ожидал бы, что вместо этого
array([False, False, False, False, False, True, False, True, False, True])
Я работаю с Python 3.7.3 и NumPy 1.16.1. Первый раз, когда я попробовал это сделать, был в командной строке, а затем скопировал вышеупомянутый MWE в IDLE, чтобы увидеть, была ли это ошибка или что-то, но результат был идентичным.
Это известная проблема? Это проблема с тем, как numpy определяет dtype
для np.arange()
? Или это что-то еще, например, версия Python / numpy?
РЕДАКТИРОВАТЬ: я попытался сделать ту же операцию, но с целыми числами, и результат, как я и ожидал. В частности, я сделал:
>>> x = np.arange(10)
>>> y = np.arange(5, 10, 2)
>>> np.in1d(x, y)
array([False, False, False, False, False, True, False, True, False, True])
Это заставляет меня подозревать, что это ошибка, связанная с dtype
массива.