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