列表中的比较元素组



我试图将列表分成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

最新更新