簡體   English   中英

從字符串列表實例化兩個2D numpy數組

[英]Instantiate two 2D numpy arrays from a list of strings

我有以下形式的行列表:

"a, b, c, d, e ... z,"

需要將第一個x保存為一個2D數組中的行,而將其余的行保存為另一個2D數組中的行。

現在,如果使用C / C ++或Java,這將很容易,我可以在幾秒鍾內完成。 但是我還沒有100%習慣於python。 但例如給出一個數組,如:

['1, 2, 4, 5,', '2, 3, 6, 3,', '1, 1, 7, 6']

並被告知必須將第一個數組中的列拆分為2個,第二個數組中的列拆分為2,如何將列表轉換為以下兩個numpy數組:

[[1, 2]
 [2, 3]
 [1, 1]]

和:

[[4, 5]
 [6, 3]
 [7, 6]]

同樣出於我自己的理解,為什么我不能/不應該遍歷嵌套的for循環中的每個元素並逐個覆蓋它們。 我不明白為什么當我嘗試值不匹配所復制的內容。

作為參考,我嘗試了以下代碼:

    self.inputs=np.zeros((len(data), self.numIn))
    self.outputs=np.zeros((len(data),self.numOut))
    lineIndex=0
    for line in data:
        d=line.split(',')

        for i in range(self.numIn):
            self.inputs[lineIndex][i]=d[i]
            print d[i],
            self.inputs.index()
        for j in range(self.numOut):
            self.inputs[lineIndex][j]=d[self.numIn+j]
        lineIndex+=1

我想在python / numpy中使用所有值創建一個numpy數組然后將其拆分為兩個單獨的數組可能會更容易。 如果這更容易幫助您,將不勝感激。 (我建議的解決方案有多好!:P)

我同意這最后一點:

我想在python / numpy中使用所有值創建一個numpy數組然后將其拆分為兩個單獨的數組可能會更容易。 如果這更容易幫助您,將不勝感激。 (我建議的解決方案有多好!:P)

您可以剝離 (以除去尾隨的逗號)和拆分 (以分解為單個字符的列表)以理解列表中的每個字符串以獲得行列表

a = ['1, 2, 4, 5,', '2, 3, 6, 3,', '1, 1, 7, 6']
rows = [l.rstrip(',').split(',') for l in a]
rows
#[['1', ' 2', ' 4', ' 5'], ['2', ' 3', ' 6', ' 3'], ['1', ' 1', ' 7', ' 6']]

然后將其轉換為整數數組:

arr = np.array(rows, int)

arr
#array([[1, 2, 4, 5],
#       [2, 3, 6, 3],
#       [1, 1, 7, 6]])

要獲得兩半:

arr[:, :2] # first two columns
#array([[1, 2],
#       [2, 3],
#       [1, 1]])

arr[:, -2:] # last two columns
#array([[4, 5],
#       [6, 3],
#       [7, 6]])

或者,返回兩個數組:

a, b = np.split(arr, arr.shape[1]/2, axis=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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