Есть ли значение NULL / NIL в numpy? для np.uint16! около -1? - PullRequest
0 голосов
/ 21 марта 2020

Я использую np.isin () для вычисления перекрытия между двумя значениями ... fe

np.isin(randint(0,10,3), randint(0,10,3)).sum()

проблема в том, что у меня есть случай, когда мне нужно значение NULL ( все нулевые строки были бы хорошим кандидатом):

  z = np.array([0, 0, 0], dtype=np.uint16)
  np.isin(z,array([0,2,3])).sum()
  : 3

, но перекрытие должно быть НОЛЬ, а не 3, потому что НОЛЬ - это реальные данные. В настоящее время я использую NULL-значение 65535, т.е. -1, что мне не очень нравится:

  z = np.array([0, 0, 0], dtype=np.uint16) + np.uint16(-1)
  np.isin(z, np.array([0,2,3], dtype=np.uint16)).sum()
  : 0

Проблема, как вы видите, состоит в том, что значение NULL не может быть ZERO, поскольку ZERO является допустимым значением data ..

Существует ли какой-либо стандартизированный способ обработки данных NIL / NULL в numpy?


Я также должен был упомянуть, что тип должен быть np.uint16

In [137]: zz = np.zeros(5, dtype=np.uint16)

In [138]: zz
Out[138]: array([0, 0, 0, 0, 0], dtype=uint16)

In [139]: zz[:] = np.nan

In [140]: zz
Out[140]: array([0, 0, 0, 0, 0], dtype=uint16)

1 Ответ

0 голосов
/ 21 марта 2020

Вы можете использовать np.nan:

>>> np.nan == np.nan
False
>>> z = np.array([np.nan, np.nan, np.nan])
>>> np.isin(z,np.array([np.nan,2,3])).sum()
0
...