эффективный способ манипулирования массивом NumPy - PullRequest
0 голосов
/ 23 октября 2019

Допустим, у меня есть массив NumPy a= np.array([1,2,3,4,5]) и значение x=4, затем я хочу создать массив NUMPY значений -1 и 1, где в 4th есть 1. положение и -1 везде.

Вот что я попробовал:

for i in range(a):
    if i == x:
        a[i]=1
    else:
        a[i]=-1

Это хорошо?

Ответы [ 4 ]

4 голосов
/ 23 октября 2019

Нет, это не numpy'ish

b=-np.ones(a.shape)
b[x] = 1

Редактировать: добавлен пример

import numpy as np

x=3
a= np.array([1, 2, 3, 4, 5])
b=-np.ones(a.shape)
b[x] = 1
print(b)

> [-1. -1. -1.  1. -1.]
2 голосов
/ 23 октября 2019

Попробуйте:

import numpy as np

a= np.array([1,2,3,4,5]) 

x=np.where(a==4, 1, -1)

print(x)

Вывод:

[-1 -1 -1  1 -1]

[Program finished]
1 голос
/ 23 октября 2019

попробуйте это:

b = np.array([1 if i == 4 else -1 for i in range(a.shape)])
0 голосов
/ 23 октября 2019

Еще одна альтернатива. Использует кастинг от bool до int.

b = 2 * (a == x) -1

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