为了账号安全,请及时绑定邮箱和手机立即绑定

Python:计算二维列表列中元素的出现次数

Python:计算二维列表列中元素的出现次数

慕哥9229398 2023-03-22 16:40:38
对于两组,您可以position相应地传递和调整宽度:fig, ax = plt.subplots()stacked_data.plot(kind="bar", stacked=True, width=0.4,                   ax=ax, position=0)stacked_data2.plot(kind="bar", stacked=True, width=0.4,                    ax=ax, position=1, hatch='//')ax.set_xlim(right=len(stacked_data)-0.5)输出:
查看完整描述

3 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

这是一个可能的解决方案:


result = data + [['nums'] + [sum(1 if data[row][col] == 'X' else 0

                                 for row in range(1, len(data)))

                             for col in range(1, len(data[0]))]]

此操作后result如下所示:


[["", "a", "b", "c"],

 ["a", "X", 1, "X"],

 ["b", "X", 2, "X"],

 ["c", "X", "foo", 3]]

 ["nums", 3, 0, 2]]


查看完整回答
反对 回复 2023-03-22
?
互换的青春

TA贡献1797条经验 获得超6个赞

我修改了你的代码。X所以我添加了一个字典来记录一列中出现的次数。


data[1:]--> 将忽略第一行 row[1:]--> 将忽略每一行的第一列值。


def foo(data):

    new_data = data[1:]

    d = { i:0 for i in range(len(data))}

    d.update({0:"nums"})


    for row in (new_data):

        for col_num, col in enumerate(row[1:], start=1):

            if col == "X":

                d[col_num] += 1 #e.g: if indexes = [1, 3, 1, 3, 1]: there is 3 "X":s in column 1, and 2 "X":s in column 3


    data.append(list(d.values()))

    return data


foo(data)

[['', 'a', 'b', 'c'],

 ['a', 'X', 1, 'X'],

 ['b', 'X', 2, 'X'],

 ['c', 'X', 'foo', 3],

 ['nums', 3, 0, 2]]


查看完整回答
反对 回复 2023-03-22
?
守候你守候我

TA贡献1802条经验 获得超10个赞

numpy 很方便


res=[col.tolist().count('X') for col in numpy.transpose(data)]

res[0]='nums'

data+[res]

或者,


res=numpy.count_nonzero(numpy.array (data)=='X',axis=0).tolist()

res[0]='nums'

data+[res]


查看完整回答
反对 回复 2023-03-22
  • 3 回答
  • 0 关注
  • 238 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信