Неуклюжие массивы;выбор элемента из каждой строки в соответствии со списком показателей - PullRequest
1 голос
/ 07 ноября 2019

Итак, проблема заключается в следующем;учитывая неуклюжий массив с n строками и списком из n индексов (от i_1 до i_n), вернуть список, содержащий элемент i_m из row_m для всех строк.

Это можно сделать так:

import awkward
some_awkward_array = awkward.fromiter([[1,2],[3,4,5],[6]]) 
some_indices = [0,2,0]
desired_elements = [row[i] for row, i in zip(some_awkward_array, some_indices)]
assert desired_elements == [1,5,6]

Но если бы это был простой массив, у нас был бы доступ к choose, и мы могли бы сделать;

import numpy as np
some_numpy_array = np.array([[1,2,0],[3,4,5],[6,0,0]]) 
some_indices = [0,2,0]
desired_elements = np.choose(some_indices, some_numpy_array.T)
assert desired_elements == [1,5,6]

Вторая версия, кажется, масштабируется лучше, она становится быстрее где-то вокруг 12 строк. Есть ли эквивалентная опция для неудобного массива?

Edit;может быть, это IndexedMaskedArray вещь, но я не могу заставить ее делать то, что я хочу.

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