NumPy - развернуть и повторить - PullRequest
3 голосов
/ 26 февраля 2020

Есть ли способ «развернуть» массив и повторить последний элемент, чтобы заполнить расширение?

Другой post говорит о расширении и заполнении с помощью 0, но я буду sh, чтобы повторить последнее значение в качестве пэда.

Скажем, у меня есть массив:

[[1, 2],
 [3, 4],
 [0, 0]]

И мне нужно вставить [5, 6, 6], чтобы заменить [0, 0], очевидно, NumPy не позволил бы это. Но могу ли я изменить / развернуть до:

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

Я читаю файл, в котором количество значений может различаться по длине, но мне нужно, чтобы массив был одинаковой формы. Один из способов сделать это - сначала прочитать файл и найти максимальную длину, а затем снова прочитать его в виде заполнителя, но размер файла составляет более 10 ГБ, поэтому я бы предпочел сделать это за один проход, «расширив» и засыпав повторениями.

1 Ответ

2 голосов
/ 26 февраля 2020

Похоже, вам нужно numpy .pad в режиме edge. Из do c:

‘edge’
    Pads with the edge values of array.

Пример кода:

>>> ar = np.array([[1,2], [4,5]])
>>> ar
array([[1, 2],
       [4, 5]])
>>> np.pad(ar, [(0, 0), (0, 4)], mode="edge")
array([[1, 2, 2, 2, 2, 2],
       [4, 5, 5, 5, 5, 5]])

Первый (0, 0) кортеж не указывает заполнения на первой оси, в то время как вторая в основном делает это " добавить 0 отступов слева и 4 справа "

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