Присвоить разные значения нечетным и четным элементам фрагмента массива numpy - PullRequest
0 голосов
/ 20 февраля 2019

Можно ли присвоить разные значения четным и нечетным элементам фрагмента массива numpy?

пример кода, который будет работать:

a=np.zeros(100)
b=np.arange(10,50,10)

print(a)
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0.]

a[b]=10

print(a)

[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0. 10.  0.  0.  0.  0.  0.  0.  0.
  0.  0. 10.  0.  0.  0.  0.  0.  0.  0.  0.  0. 10.  0.  0.  0.  0.  0.
  0.  0.  0.  0. 10.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]

Теперь я пытаюсьназначать разные числа четным и нечетным элементам среза a [b]

a[b][::2] = 10

a[b][1::2] = -10

Но это не работает, исходный массив нулей не изменяется.

Краткое уведомление- b и a, в действительности, генерируются динамически, поэтому я обычно не знаю их форму (a и b) и какие индексы будут в пределах (b)

1 Ответ

0 голосов
/ 20 февраля 2019

Вы должны индексировать b напрямую:

import numpy as np

a = np.zeros(100)
b = np.arange(10,50,10)

a[b[::2]] = 10
a[b[1::2]] = -10

print(a[b])
# [ 10. -10.  10. -10.]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...