Python:在这种情况下,为什么我不能为数组赋值?
发布时间:2020-12-20 11:55:11 所属栏目:Python 来源:网络整理
导读:import numpy as npdata = np.array([['Height','Weight'],['165','48'],['168','50'],['173','53']])data[0,0] = data[0,0] + "_1" data [0,0]是’Height’,我想用’Height_1’替换它.但上面的代码不起作用.它返回结果为: data[0,0] ‘Height’ 数据[0,0]
import numpy as np data = np.array([['Height','Weight'],['165','48'],['168','50'],['173','53']]) data[0,0] = data[0,0] + "_1" data [0,0]是’Height’,我想用’Height_1’替换它.但上面的代码不起作用.它返回结果为: data[0,0]
数据[0,0]元素保持不变.如果我直接替换它而不参考它自己,它仍然无法正常工作. data[0,0] = "Height" + "_1" 结果: data[0,0]
但如果我用“Height”以外的其他字符替换它,它就可以了. data[0,0] = "str" + "_1" 结果: data[0,0]
我用这个案例来解释我遇到的问题.在我的工作中,我必须引用数组本身,因为我需要替换不符合某些要求的元素.有人有解决方案吗?谢谢. 解决方法
问题是你的数组是dtype(‘< U6')
>>> data = np.array([['Height','53']]) >>> data.dtype dtype('<U6') >>> 它会自动截断: >>> data[0,0] = "123456789" >>> data array([['123456','53']],dtype='<U6') >>> 在创建数组时,您始终可以将dtype指定为“对象”,但这样可以消除numpy开始时的许多速度优势. 或者,您可以指定更长的字符串类型: >>> data array([['Height',dtype='<U20') >>> data[0,0]='Height_1' >>> data array([['Height_1',dtype='<U20') >>> 但要小心,好像你设置的限制太长,你会浪费内存: >>> data = np.array([['Height','53'],['42','88']],dtype='U20') >>> data.nbytes 800 >>> data = np.array([['Height',dtype='U6') >>> data.nbytes 240 如果您只需要有限数量的字符,请考虑使用字节字符串(内存要求的1/4): >>> data = np.array([['Height',dtype='S20') >>> data.nbytes 200 >>> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |