在某些索引中更改numpy.array中的字符串值

时间:2018-10-12 13:35:03

标签: python numpy

我需要为另一个数组中的每个值创建一个字符串数组,实际上是颜色值。逻辑是正值应该是一种颜色,负值应该是另一种颜色。

我尝试了以下代码段:

values = np.array([1, 2, -3, 4, 5])
color_values = np.array(['rgb(74,159,234)'] * len(values))
color_values[values < 0] = 'rgb(120,183,239)'
print(color_values)

但是问题是新的字符串值被截断为数组中先前值的长度,所以结果是:

['rgb(74,159,234)', 'rgb(74,159,234)', 'rgb(120,183,239', 'rgb(74,159,234)', 'rgb(74,159,234)']

第三个值已更改,但没有最后的括号。我可以重写代码以获得所需的结果,但是现在我很好奇为什么会发生这种情况。

我正在使用Python 3.6numpy 1.14.2

1 个答案:

答案 0 :(得分:1)

根据this answer,str numpy数组的长度是固定的。他们建议在声明数组时指定数据类型。

您可以在声明数组时尝试添加数据类型;将其设置为16个字符(或更多)。

color_values = np.array(['rgb(74,159,234)'] * len(values), dtype='S16')

其余各行无需修改。