Где предложение с numpy с одним массивом и / или empty_like - PullRequest
1 голос
/ 13 марта 2019

Я пытаюсь выяснить, как работает предложение np.where. Я создаю простой DF:

np.random.seed(1)
df = pd.DataFrame(np.random.randint(0, 10, size=(3, 4)), columns=list('ABCD'))
print(df)

   A  B  C  D
0  5  8  9  5
1  0  0  1  7
2  6  9  2  4

Теперь, когда я реализую:

print(np.where(df.values, 1, np.nan))

Я получаю:

[[  1.   1.   1.   1.]
 [ nan  nan   1.   1.]
 [  1.   1.   1.   1.]]

Но когда я создаю массив типа empty_like из df: и помещаю его в предложение where, я получаю следующее:

print(np.where(np.empty_like(df.values), 1, np.nan))

[[ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]]

На самом деле можно использовать справку для объяснения того, как, где предложение работает с одним массивом.

1 Ответ

1 голос
/ 13 марта 2019

np.empty_like ()

Документы: -

numpy.empty_like (прототип, dtype = нет, order = 'K', subok = True)

Возвращает новый массив с такой же формой и типом, что и данный массив.

>>> a = ([1,2,3], [4,5,6])                         # a is array-like
>>> np.empty_like(a)
array([[-1073741821, -1073741821,           3],    #random
       [          0,           0, -1073741821]])

np.empty_like () создает массив той же формыи введите в качестве заданного массива, но со случайными числами .Этот массив теперь входит в np.where ()

numpy.where ()

Документы: -

numpy.где (условие [, х, у])

Возвращать элементы, которые выбираются из х или у в зависимости от условия.

Пример: -

>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.where(a < 5, a, 10*a)
array([ 0,  1,  2,  3,  4, 50, 60, 70, 80, 90])
>>>np.where(a,1,np.nan)
array([nan,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])

В Python любойчисло, отличное от нуля, считается ИСТИНА , тогда как ноль считается ЛОЖЬ .

Когда np.where () получает np.массив он проверяет на наличие условия. Здесь сам массив действует как условие, т. е. np.where оценивается как TRUE , когда элементы массива не равны нулю, и FALSE , когда они равны 0. Так«Истинные» элементы заменяются на 1 , а «Ложные» элементы на np.nan .

Ссылка: -

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