为了账号安全,请及时绑定邮箱和手机立即绑定

替换 numpy 数组中的值时防止字符串被截断

替换 numpy 数组中的值时防止字符串被截断

12345678_0001 2021-07-01 19:00:43
假设我有数组a和ba = np.array([1,2,3])b = np.array(['red','red','red'])如果我要对这些数组应用一些像这样的花哨索引b[a<3]="blue"我得到的输出是array(['blu', 'blu', 'red'], dtype='<U3')我知道这个问题是因为 numpy 最初只为 3 个字符分配空间,因此它无法将整个单词 blue 放入数组中,我可以使用什么解决方法?目前我正在做b = np.array([" "*100 for i in range(3)])b[a>2] = "red"b[a<3] = "blue"但这只是一种解决方法,这是我的代码中的错误吗?或者是numpy的一些问题,我该如何解决这个问题?
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

您可以通过将dtypeof设置为b来处理可变长度字符串"object":


import numpy as np

a = np.array([1,2,3])

b = np.array(['red','red','red'], dtype="object")


b[a<3] = "blue"


print(b)

这输出:


['blue' 'blue' 'red']

这dtype将处理字符串或其他通用 Python 对象。这也必然意味着在幕后您将拥有一个numpy指针数组,因此不要指望使用原始数据类型时获得的性能。


查看完整回答
反对 回复 2021-07-13
  • 3 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号