亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

字符串列表到整數數組

字符串列表到整數數組

蠱毒傳說 2021-07-15 18:11:34
從字符串列表中,像這樣:example_list = ['010','101']我需要得到一個整數數組,其中每一行都是一個字符串,是一列中的每個字符,如下所示:example_array = np.array([[0,1,0],[1,0,1]])我已嘗試使用此代碼,但它不起作用:example_array = np.empty([2,3],dtype=int)    i = 0 ; j = 0for string in example_list:    for bit in string:        example_array[i,j] = int(bit)        j+=1    i+=1誰能幫我?我正在使用 Python 3.6。預先感謝您的幫助!
查看完整描述

3 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

如果所有字符串的長度相同(這對于構建連續數組至關重要),則使用view來有效地分隔字符。


r = np.array(example_list)

r = r.view('<U1').reshape(*r.shape, -1).astype(int)


print(r)

array([[0, 1, 0],

       [1, 0, 1]])

你也可以走列表理解路線。


r = np.array([[*map(int, list(l))] for l in example_list])


print(r)

array([[0, 1, 0],

       [1, 0, 1]])


查看完整回答
反對 回復 2021-07-27
?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

你可以這樣做map

example_array = map(lambda x: map(lambda y: int(y), list(x)), example_list)

外部對 中的每個項目lambda執行list(x)操作example_list。例如,'010' => ['0','1','0']。內部lambda將單個字符(來自 的結果list(x))轉換為整數。例如,['0','1','0'] => [0,1,0]。


查看完整回答
反對 回復 2021-07-27
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

最簡單的方法是使用列表推導式,因為它會自動為您生成輸出列表,可以輕松地將其轉換為 numpy 數組。您可以使用多個 for 循環來執行此操作,但隨后您就無法創建列表、子列表并附加到它們。雖然不難,但使用列表推導式的代碼看起來更優雅。


試試這個:


newList = np.array([[int(b) for b in a] for a in example_list])

newList 現在看起來像這樣:


>>> newList

 ... [[0, 1, 0], [1, 0, 1]]

注意:此時不需要調用 map,盡管這確實有效。


那么這里發生了什么?我們正在逐項遍歷您的原始字符串列表 (example_list),然后遍歷當前項中的每個字符。在功能上,這相當于...


newList = []


for a in example_list:

    tmpList = []

    for b in a:

        tmpList.append(int(b))

    newList.append(tmpList)


newList = np.array(newList)

就個人而言,我發現多個 for 循環對于初學者來說更容易理解。然而,一旦你掌握了列表推導式,你可能就不想回去了。


查看完整回答
反對 回復 2021-07-27
  • 3 回答
  • 0 關注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號