我有一个numpy数组,它代表图像数据,我这样做了
import numpy as np
array = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 9, 8, 8, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 4, 9, 9, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 6, 5, 8, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 5, 9, 6, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 6, 5, 6, 7, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
字符串
我的图像数据的结构与上面的结构类似(虽然不完全相同)(即大多数值都在主对角线内,上下条目中都是0。我想在我的数据中的所有图像中使用一致的(或常量而不是动态的)方法来去除0,以便它们都保持相同的形状。
例如,我能想到的当前解决方案就是像这样索引数组
array[1:, 3:-3]
型
并且相同的索引将应用于我的数据中的所有图像,以确保它们都具有相同的形状。我还看了numpy的triu和tril的方法,但我不太确定如何在这里应用它。
最后,我还包含了一个我试图实现的图像(即,以一致的方式去掉左边红线下方的零和右边红线上方的零)。
的数据
2条答案
按热度按时间w80xi6nr1#
我想这可能接近你所要求的:
字符串
输出量:
型
它采用从左上角开始的主对角线和对角线右侧的5个元素。
jjjwad0x2#
你可能想检查稀疏矩阵1,它提供了一致的压缩,去除了零。
示例行稀疏矩阵表示将如下:
字符串
的数据
型
绘制它也很容易:
plt.imshow(sparse_array.toarray())
的
1压缩稀疏行矩阵:https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csr_matrix.html