【发布时间】:2020-07-14 22:12:55
【问题描述】:
给定一个具有多列和多行的二维数组 (A) 和一个长度相同的一维数组 (B)。 (A) 包含重复的行,我想将这些重复的行折叠到一个唯一的条目中,但在 (B) 中添加相应的值。目前我正在使用字典来解决这个问题,但如果数组很长,我认为它并不理想而且太慢:
example_keys = [[1,0,0,0], [1,1,0,0], [1,1,1,0], [1,0,0,0]]
example_vals = [[2], [3], [1], [10]]
example_dict = {}
i = 0
for row in example_keys:
state_key = tuple(row)
if state_key in example_dict:
# Just add value
example_dict[state_key] += example_vals[i]
else:
# Create entry
example_dict[state_key] = example_vals[i]
i += 1
我想要的输出是这两个数组:
edited_keys = [[1,0,0,0], [1,1,0,0], [1,1,1,0]]
edited_vals = [[12], [3], [1]]
数组的顺序无关紧要,只要数组之间的行是一致的。这也需要处理多个重复的行,而不仅仅是两个。有没有办法通过使用 numpy 巧妙地操作数组来创建这些数组?谢谢:)
【问题讨论】:
标签: python arrays algorithm numpy