我试图将列表分成n/2组(n =列表长度),并比较每组的出现次数。
当我试着把我的代码写成:
_3_hop_middle_cells = ['E', 'D', 'E', 'D', 'D', 'C', 'C', 'D', 'D', 'E', 'D', 'C']
_3_hop_middle_cells = np.array(_3_hop_middle_cells)
_3_hop_middle_cells = list(np.split(_3_hop_middle_cells, len(_3_hop_middle_cells)/2))
和_3_hop_middle_cells的输出是:
array(['E', 'D'], dtype='<U1'),
array(['D', 'C'], dtype='<U1'),
array(['C', 'D'], dtype='<U1'),
array(['D', 'E'], dtype='<U1'),
array(['D', 'C'], dtype='<U1')]
之后,当我尝试计数第0个元素
时_3_hop_middle_cells.count(_3_hop_middle_cells[0])
抛出错误
包含多个元素的数组的真值是二义的。使用a.a any()或a.a all()
你能帮我处理一下我的问题吗?PS:我是一个相当新的在stackoverflow,为此,我很抱歉,如果我的问题看起来很傻..
为避免此错误,请使用np.array_equal
。由于_3_hop_middle_cells
是numpy数组的列表,因此计算出现次数的最简单方法是以下列表推导式:
sum([1 for item in _3_hop_middle_cells if np.array_equal(item, _3_hop_middle_cells[0])])
或者,写成for循环:
count = 0
for item in _3_hop_middle_cells:
if np.array_equal(item, _3_hop_middle_cells[0]):
count += 1