簡體   English   中英

替換Nd numpy數組中的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM