Получить индекс массива в массиве numpy - PullRequest
0 голосов
/ 18 июня 2019

У меня есть спектрограмма. Это 129 строк х n столбцов. Я хочу "сократить" столбцы до 20. И я бы сделал что-то вроде этого:

if spectrogram.shape[1] > 20:
                  for row in spectrogram:
                    i = spectrogram.index(row)
                    row = row[:20]
                    spectrogram[i] = row 

Но выдает ошибку, используя .index(), поэтому я попытался использовать .where(), как я видел здесь на SOF, но произошла другая ошибка:

AttributeError: 'numpy.ndarray' object has no attribute 'where'

Как мне поступить?

1 Ответ

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

Вы должны иметь возможность просто взять нужный фрагмент без цикла (всякий раз, когда у вас возникает искушение циклически перебирать массив с пустым фрагментом, обычно есть лучший способ).

spectrogram[:, :20]

Вот упрощенный пример: для массива 5x10 возьмите только первые 5 из каждой строки, чтобы получить массив 5x5:

import numpy as np
a = np.arange(50).reshape(5, 10)
a[:, :5]

результат

array([
   [ 0,  1,  2,  3,  4],
   [10, 11, 12, 13, 14],
   [20, 21, 22, 23, 24],
   [30, 31, 32, 33, 34],
   [40, 41, 42, 43, 44]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...