我需要为另一个数组中的每个值创建一个字符串数组,实际上是颜色值。逻辑是正值应该是一种颜色,负值应该是另一种颜色。
我尝试了以下代码段:
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.6
,numpy 1.14.2
答案 0 :(得分:1)
根据this answer,str numpy
数组的长度是固定的。他们建议在声明数组时指定数据类型。
您可以在声明数组时尝试添加数据类型;将其设置为16个字符(或更多)。
color_values = np.array(['rgb(74,159,234)'] * len(values), dtype='S16')
其余各行无需修改。