python - 在某些索引中更改 numpy.array 中的字符串值
问题描述
我需要为另一个数组中的每个值创建一个字符串数组,实际上它是颜色值。逻辑是正值应该是一种颜色,负值应该是另一种颜色。
我试过这个代码片段:
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
解决方案
根据这个答案, strnumpy
数组具有固定长度。他们建议在声明数组时指定数据类型。
您可以在声明数组时尝试添加数据类型;将其设置为 16 个字符(或更多)。
color_values = np.array(['rgb(74,159,234)'] * len(values), dtype='S16')
其余的行不需要修改。
推荐阅读
- php - 在laravel中将数据从视图传递到视图
- linux - 选择没有id的属性
- arrays - Swift:将二维数组转换为自定义对象数组
- selenium-webdriver - 我们可以将 WinAppDriver 与 Selenium WebDriver(自动化 Siebel/Silverlight 应用程序)连接起来吗?
- java - 使用 Kotlin 在 Android 中通过 Volley 发送授权标头
- javascript - 手动将函数插入 Javascript/Nodejs 事件队列?
- angular - RxJs Observable in Observable from Array
- c++ - c++ :std::bad_alloc 将类对象作为参数传递时
- python - 如何通过 pywinauto 测试窗口应用程序
- c++ - 有没有办法可以使用 ofstream 保存屏幕截图?