Python 替换numpy阵列中的子阵列的有效方法-numpy.put或类似?

Python 替换numpy阵列中的子阵列的有效方法-numpy.put或类似?,python,arrays,list,numpy,matplotlib,Python,Arrays,List,Numpy,Matplotlib,我有一个很长的列表,叫做“颜色”,包含长度为4的元组。 我需要用其他元组替换其中一些元组(或者更具体地说,我需要替换的所有元组都应该替换为元组(1,0,0,1.),对应于matplotlib中的颜色“红色”)。我知道我需要替换的元组的索引——存储在一个名为“索引”的列表中,长度为“li” 当然,我可以使用: for i in range(li): colours[indices[i]] = (1.,0.,0.,1.) 但由于“颜色”列表的长度是400*400个元素,这种替换需要相当长的时间

我有一个很长的列表,叫做“颜色”,包含长度为4的元组。 我需要用其他元组替换其中一些元组(或者更具体地说,我需要替换的所有元组都应该替换为元组(1,0,0,1.),对应于matplotlib中的颜色“红色”)。我知道我需要替换的元组的索引——存储在一个名为“索引”的列表中,长度为“li”

当然,我可以使用:

for i in range(li):
  colours[indices[i]] = (1.,0.,0.,1.)
但由于“颜色”列表的长度是400*400个元素,这种替换需要相当长的时间。我想知道是否有一种更快捷、更优雅的方法可以做到这一点

我尝试将“colors”转换为numpy.array(对于matplotlib仍然可以正常工作),然后使用numpy.put方法:

n.put(colours, indices, [(1.,0.,0.,1.)]*li)
但这不起作用,因为n.put没有替换整个元组,而是用(1,0,0,1.)元组中的另一个数字替换颜色中元组的子元素(即单个数字)


有人对使用什么有什么建议吗?

如果您将
颜色
转换为NumPy数组,那么您可以使用所谓的

colours = np.array(colours)
colours[indices, :] = (1, 0, 0, 1)

嗯,对不起,也许我不清楚-colors[li,:]只用索引“li”替换元组,但我需要用这个列表中的索引替换所有元组,称为“index”(并且li=length(index))。噢,我误读了变量名。但是,它将与列表
索引
一起使用。