У меня очень разреженные матрицы, поэтому я хочу извлечь наименьшую прямоугольную область матрицы с ненулевыми значениями. Я знаю, что numpy.nonzero (a) дает вам индексы элементов, отличных от нуля, но как я могу использовать это для извлечения подматрицы, содержащей элементы матрицы по этим индексам.Numpy: заданы ненулевые индексы матрицы, как извлекать элементы в подматрицу
Чтобы дать пример, это то, что я стремлюсь:
>>> test
array([[0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 0],
[0, 0, 1, 1, 0, 0]])
>>> np.nonzero(test)
(array([1, 1, 1, 1, 2, 2]), array([1, 2, 3, 4, 2, 3]))
>>> submatrix(test)
array([[1, 1, 1, 1],
[0, 1, 1, 0]])
Кто-нибудь знает простой способ сделать это в NumPy? Благодарю.
Ваш пример вывода и ваше описание не точно такой же - вы хотите, чтобы извлечь все ненулевые элементы матрицы, или вы хотите, чтобы получить матрицу, представляющую наименьшее прямоугольной области исходной матрицы, содержащей все ненулевые элементы? – Brionius
Извините. Да, я хочу самый маленький прямоугольный регион, я должен был это сделать ясно; Я отредактирую. – user2909415