【发布时间】:2014-09-30 18:02:51
【问题描述】:
我有一个很长的列表,称为“颜色”,其中包含长度为 4 的元组。 我需要用其他元组替换其中的一些元组(或者更具体地说,我需要替换的所有元组都应该替换为对应于颜色“红色”的元组 (1.,0.,0.,1.) ' 在 matplotlib 中)。我知道我需要替换的元组的索引 - 存储在一个名为“indices”的列表中,长度为“li”。
我当然可以使用:
for i in range(li):
colours[indices[i]] = (1.,0.,0.,1.)
但是因为“颜色”列表的长度是 400*400 个元素,所以这种替换需要相当长的时间。我想知道是否有更快更优雅的方法来做到这一点?
我尝试将“颜色”转换为 numpy.array(它仍然适用于 matplotlib),然后使用 numpy.put 方法:
n.put(colours, indices, [(1.,0.,0.,1.)]*li)
但这不起作用,因为 n.put 不是替换整个元组,而是将颜色中的元组的子元素(即单个数字)替换为 (1.,0.,0) 中的另一个数字.,1.)-元组。
大家有什么建议吗?
【问题讨论】:
标签: python arrays list numpy matplotlib