我有一个由字符串组成的二维数组,我想用长度较长的其他字符串替换它们。
我尝试了以下代码:
for key, value in UniqueIds.items():
indices[indices[...] == str(value)] = key
需要将每个值替换为对应的键,但每个值是4字节,而键大约有10个字符,改变后的值只显示前4个字母
我有一个由字符串组成的二维数组,我想用长度较长的其他字符串替换它们。
我尝试了以下代码:
for key, value in UniqueIds.items():
indices[indices[...] == str(value)] = key
需要将每个值替换为对应的键,但每个值是4字节,而键大约有10个字符,改变后的值只显示前4个字母
dtype
,例如在这里或这里。一个四个字符的字符串将是dtype='<U4'
。如果你有一个八个字符的字符串,它将是dtype='<U8'
等等。dtype='<U10'
来存储10个Unicode字符)。如果你不关心内存和复制操作,可以使用object
作为dtype
来使其动态化。import numpy as np
s = np.array(['test'], dtype=object)
s[0] = 'testtesttesttest'
# s
# array(['testtesttesttest'], dtype=object)
.replace()
将会生效: 最初的回答
s[0] = s[0].replace('test', 'notatest')
# s
# array(['notatestnotatestnotatestnotatest'], dtype=object)
indices = np.char.mod('%d', indices)
当我使用以下这行代码替换上一行时:
indices = indices.astype(str)
一切都按预期运行。
numpy
是这样实现的(itemsize
)。 - hpaulj