【发布时间】:2021-05-12 20:17:18
【问题描述】:
我正在开发不支持 numpy 或 scipy 的微控制器。我想提取矩阵中所有大于给定阈值的子矩阵。
myMtarix = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 60, 0, 0, 284, 0],
[0, 100, 0, 74, 421, 157, 0, 0, 0, 0, 317, 364, 736, 245, 1470, 0],
[0, 717, 0, 258, 879, 496, 0, 0, 0, 0, 0, 671, 766, 725, 1429, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
myMatrix = 6*16 矩阵,我想提取
subMatrix1 = [[100],
[717]]
subMatrix2 = [[0, 204, 0],
[74, 421, 157],
[258, 879, 496]]
subMatrix3 = [[0, 60, 0, 0, 284],
[317, 364, 736, 245, 1470],
[0,671, 766, 725, 1429]]
和阈值 = 10
我试过这样的
在这里,收集值 > 阈值及其索引
threshold = 10
pressureIndexes = []
pressurePoints = []
reqValue = []
reqIndex = []
reqValue = [myMatrix[i][j] for i in range(numRows) for j in range(numCols) if(myMatrix[i][j] > threshold)]
reqIndex = [[i,j] for i in range(numRows) for j in range(numCols) if(myMatrix[i][j] > threshold)]
从这里,我尝试提取子矩阵的确切边界
Xend = Xstart = reqIndex[0][0]
Yend = Ystart = reqIndex[0][1]
dummy = []
for i in range(1,len(reqIndex)):
PXstart = Xstart
PXend = Xend
PYstart = Ystart
PYend = Yend
Xstart = min(Xstart,reqIndex[i][0])
Xend = max(Xend,reqIndex[i][0])
Ystart = min(PYstart,reqIndex[i][1])
Yend = max(PYend,reqIndex[i][1])
if(abs(PXend-Xend) > 2 or abs(PYend-Yend) > 2):
dummy.append([[PXstart,PXend],[PYstart,PYend]])
Xend = Xstart = reqIndex[i][0]
Yend = Ystart = reqIndex[i][1]
dummy.append([[Xstart,Xend],[Ystart,Yend]])
print()
for i in dummy:
print(i)
print('---------------------------------------------------------')
sleep(1)
输出:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 60, 0, 0, 284, 0]
[0, 100, 0, 74, 421, 157, 0, 0, 0, 0, 317, 364, 736, 245, 1470, 0]
[0, 717, 0, 258, 879, 496, 0, 0, 0, 0, 0, 671, 766, 725, 1429, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[[1, 1], [4, 4]] # [[rowStarting,rowEnding],[colStarting,colEnding]] for value 204
[[1, 1], [11, 11]]
[[1, 3], [1, 14]]
【问题讨论】:
-
你能告诉为什么 subMatrix1 没有分成两部分,因为有一个 '0' 列吗?规范并不清楚这一点。你试过一些代码吗?请告诉我们。
-
对不起,Malo,这是我的错误。我们有 3 个子矩阵