我有一个类似下面的numpy矩阵:
matrix = [[0., 0., 0., 0., 0., 1., 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., 0., 1., 1., 1., 1., 1.],
[0., 1., 1., 1., 1., 0., 1., 1., 0., 1., 1., 0., 0., 1., 1., 0.,
1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 1., 0., 0., 1., 0., 1., 0., 0., 1., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 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., 0.]]
edit:响应对矩阵输出的请求,转向数组如何?
m = np.array(matrix)
我试图找到包含1或0最多的内部列表,有一个约束。
约束是,在内部列表中搜索最多的1或0时,会对内部列表进行分段。例如,每个内部列表应在第12个索引处进行细分。
因此,当搜索最长的1或0时,它可能位于第一个内部列表的第一段(第12个索引之前),也可能位于最后一个段(第12个索引之后)。
是否有更简单的numpy方法来完成此任务?
输出格式是灵活的,只要它表示内部列表索引,并且True
表示“第12个索引之前”或False
表示“第12个索引之后”。
这是一个例子:
这些示例答案对应于上面的示例矩阵
大多数ONES:1
,True
(内部列表位置的索引,True
表示它在第12个索引之前)。
多数零:2
,False
(列表索引,False
是因为索引之后)
这可能有点令人困惑-请让我知道我是否可以为您澄清一些内容。
edit:进行澄清,而不是搜索最长的序列。搜索具有给定值最多出现的细分。
答案 0 :(得分:1)
IIUC查找1,您可以使用以下代码,对于0将1替换为0:
a = np.array(matrix)
#taking values only till 12th index
Before_12_index = (a[:,:13]==1).sum(1)
#taking values only after 12th index
After_12_index = (a[:,13:]==1).sum(1)
#condition for checking whether they have max number of 1 before or after 12th index
cond_1 = (Before_12_index>After_12_index).reshape(-1,1)
cond_1
array([[False],
[ True],
[ True]])