Python:在这种情况下,为什么我不能为数组赋值?

Python:在这种情况下,为什么我不能为数组赋值?,第1张

概述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] ‘He
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]元素保持不变.如果我直接替换它而不参考它自己,它仍然无法正常工作.

data[0,0] = "Height" + "_1"

结果:

data[0,0]

‘Height’

但如果我用“Height”以外的其他字符替换它,它就可以了.

data[0,0] = "str" + "_1"

结果:

data[0,0]

‘str_1’

我用这个案例来解释我遇到的问题.在我的工作中,我必须引用数组本身,因为我需要替换不符合某些要求的元素.有人有解决方案吗?谢谢.

解决方法 问题是你的数组是dtype(‘< U6')

>>> data = np.array([['Height','53']])>>> data.dtypedtype('<U6')>>>

它会自动截断:

>>> data[0,0] = "123456789">>> dataarray([['123456','53']],dtype='<U6')>>>

在创建数组时,您始终可以将dtype指定为“对象”,但这样可以消除numpy开始时的许多速度优势.

或者,您可以指定更长的字符串类型:

>>> dataarray([['Height',dtype='<U20')>>> data[0,0]='Height_1'>>> dataarray([['Height_1',dtype='<U20')>>>

但要小心,好像你设置的限制太长,你会浪费内存:

>>> data = np.array([['Height','53'],['42','88']],dtype='U20')>>> data.nbytes800>>> data = np.array([['Height',dtype='U6')>>> data.nbytes240

如果您只需要有限数量的字符,请考虑使用字节字符串(内存要求的1/4):

>>> data = np.array([['Height',dtype='S20')>>> data.nbytes200>>>
总结

以上是内存溢出为你收集整理的Python:在这种情况下,为什么我不能为数组赋值?全部内容,希望文章能够帮你解决Python:在这种情况下,为什么我不能为数组赋值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193765.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存