Дополнить массив значениями в массиве (Python) - PullRequest
0 голосов
/ 13 апреля 2020

В настоящее время у меня есть numpy массив чисел. Например, допустим, у меня есть:

[1, 2, 4, 5, 3, 6]

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

[1, 2, 2, 4, 4, 4, 4, 5, 5, 5, 5, 5, 3, 3, 3, 6, 6, 6, 6, 6, 6]

Однако я бы предпочел не выполнять l oop через этот массив и задавался вопросом, есть ли функция в numpy или какой-то быстрый процесс для делать этот определенный процесс? Спасибо!

Ответы [ 3 ]

1 голос
/ 13 апреля 2020

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

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

вывод

array([1, 2, 2, 4, 4, 4, 4, 5, 5, 5, 5, 5, 3, 3, 3, 6, 6, 6, 6, 6, 6])
1 голос
/ 13 апреля 2020

Вы можете использовать itertools вместе со списком-пониманием.

from itertools import chain

list(chain.from_iterable([item] * item for item in data))

[1, 2, 2, 4, 4, 4, 4, 5, 5, 5, 5, 5, 3, 3, 3, 6, 6, 6, 6, 6, 6]
0 голосов
/ 13 апреля 2020

Это сработало для меня

import numpy as np
a = np.array([1,3,4])
b = np.repeat(a,a)
...