Numpy - извлекать столбцы array2d на основе массива - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть многомерный массив с формой (40, 926). У меня также есть форма массива numpy (126) со случайными индексами, представляющими действительные столбцы.

Теперь я хотел бы отфильтровать мой многомерный массив на основе этой маски индексов: все столбцы отличаются от этих индексов. должна быть удалена результирующая фигура (40,126)

Итак, что-то вроде:

data = np.array([[]])
sel = np.asarray(idx.split(',')) 
print sel.shape #(126) array 404,410,500...1300
print X.shape #(40,926) 
for x in wave: #(926) array 400,401,402...1325
    for y in sel:
        if float(x) == float(y):
            index = np.where(wave == x)[0][0]
            arr =  X[:,index]
            data = np.append(data, arr, axis=1)
print data.shape #must be (40,126)
return data

Произошла ошибка: возврат конкатенации ((arr, values), axis = axis) ValueError: все входные массивыдолжно иметь одинаковое количество размеров

1 Ответ

0 голосов
/ 04 ноября 2019

Если массивы wave и sel уже отсортированы, вы можете получить индексы wave, где wave == sel, и использовать их для выбора строк из матрицы

idx = wave.searchsorted(sel)
data = X[:, idx]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...