Как мне быстро уничтожить массив numpy? - PullRequest
1 голос
/ 13 июня 2019

Мне нужна функция, которая уничтожает, удаляет m из n, массив numpy. Например, чтобы удалить 1 в 2 или 2 в 3. Итак, массив, который: [7, 4, 3, 5, 9, 2, 4, 1, 6, 8]

, уничтоженное 1: 2, станет: [7, 3, 9, 4, 6]

Интересно, можно ли изменить форму массива с 1-го массива N длиной до 1-го, а N / 2, 2 длиной, а затем отбросить дополнительное измерение?

В идеале, вместо того, чтобы просто сбрасывать прореженные выборки, я хотел бы найти максимальное значение для каждого набора (в этом примере пары) значений. Например: [7, 5, 9, 4, 8]

Есть ли способ найти максимальное значение в каждом наборе, а не просто отбросить его?

Дополнительная проблема заключается в том, что смысл в том, чтобы построить график значений.

Требуется прореживание, потому что построение каждого значения занимает слишком много времени, а это означает, что мне нужно уменьшить размер массива, прежде чем строить его, но мне нужно сделать это быстро. Так что цикл for или while займет слишком много времени.

1 Ответ

0 голосов
/ 13 июня 2019

чтобы найти максимум:

1) k делит N:

k,N = 3,18
a = np.random.randint(0,10,N)
a
# array([0, 6, 6, 3, 7, 0, 9, 2, 3, 2, 5, 4, 2, 6, 9, 6, 3, 2])
a.reshape(-1,k).max(1)
# array([6, 7, 9, 5, 9, 6])

2) k не делит N:

k,N = 4,21
a = np.random.randint(0,10,N)
a
# array([4, 4, 6, 0, 0, 1, 7, 8, 2, 3, 0, 5, 7, 1, 1, 5, 7, 8, 3, 1, 7])
np.maximum.reduceat(a, np.arange(0,N,k))
# array([6, 8, 5, 7, 8, 7])

2) всегда должно работать, но я подозреваю, 1) быстрее, где это применимо

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