[英]replace strings in N-d numpy array
我有一個2d字符串數組,我想用其他長度更大的字符串替換它們。 我試過這個
for key, value in UniqueIds.items():
indices[indices[...] == str(value)] = key
用相應的鍵替換每個值,但每個值是4個字節,鍵大約是10,更改的值只顯示前4個字母
我認為您需要更改數組的dtype
,請參閱此處或此處 。 一個4個字符的字符串將是dtype='<U4'
。 如果你有一個8個字符的字符串,它將是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)
問題是我將初始的int數組轉換為這樣的字符串數組:
indices = np.char.mod('%d', indices)
當我用這個更改上面的行時:
indices = indices.astype(str)
一切都按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.