Учитывая матрицу А с формой (1000000,6)
я понял, как получить минимальное правое значение для каждой строки и реализовали его в этой функции:Numpy: Как избавиться от минимумов вдоль оси = 1, учитывая показатели - эффективным образом?
def calculate_row_minima_indices(h): # h is the given matrix.
"""Returns the indices of the rightmost minimum per row for matrix h."""
flipped = numpy.fliplr(h) # flip the matrix to get the rightmost minimum.
flipped_indices = numpy.argmin(flipped, axis=1)
indices = numpy.array([2]*dim) - flipped_indices
return indices
indices = calculate_row_minima_indices(h)
for col, row in enumerate(indices):
print col, row, h[col][row] # col_index, row_index and value of minimum which should be removed.
Каждая строка имеет минимум. Так что мне нужно знать, чтобы удалить запись с минимальным и сжиматься матрицы с формы (1000000,6)
к матрице с формы (1000000,5)
.
Я бы сгенерировал новую матрицу с меньшим размером и заполнил ее значениями, которые я хочу, чтобы они несли с помощью цикла for, но я боюсь времени выполнения. Так есть какой-то встроенный способ или какой-то трюк, чтобы уменьшить матрицу по минимумам в строке?
Возможно, эта информация используется: значения все больше или равны 0.0.
Вы можете сделать 'mask = np.ones (data.shape, 'bool'); mask [np.arange (nrows), col_indices] = False'. Это может быть более читаемым. –
Это не делает то же самое. –
Кажется, что то же самое, не могли бы вы объяснить, как они отличаются? –