我有形式的列表:操縱列表和數組以一定的順序
['a b 1 2', 'c d 3 4']
我最終試圖用一個4個垂直numpy的陣列來結束。例如,['a','c']
和[1,2]
我開始有點迷糊使用各種分裂功能,陣列分裂等。
超級菜鳥的問題,這是有效地這樣做盡可能多的練習。
任何幫助將不勝感激!
我有形式的列表:操縱列表和數組以一定的順序
['a b 1 2', 'c d 3 4']
我最終試圖用一個4個垂直numpy的陣列來結束。例如,['a','c']
和[1,2]
我開始有點迷糊使用各種分裂功能,陣列分裂等。
超級菜鳥的問題,這是有效地這樣做盡可能多的練習。
任何幫助將不勝感激!
A = ['a b 1 2', 'c d 3 4']
filter(lambda x:x[0].strip() or x[1].strip(),zip (*A))
#[('a', 'c'), ('b', 'd'), ('1', '3'), ('2', '4')]
不是numpy的陣列雖然
[編輯]假設我的理解林不知道我做了哪些目標?
有一個在numpy的任何功能在Python列表分割字符串將字符串直接分成不同的數組。如果這些字符串是從一致列數據類型的文本文件閱讀,可以考慮使用numpy.genfromtxt
:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html
編輯或者你可以強迫你數組的格式np.genfromtxt
可以作爲jterrace筆記閱讀在他的迴應中。
+1 for genfromtxt – jterrace 2012-08-17 21:15:38
你可以把它讀作一個記錄陣列:
>>> A = ['a b 1 2', 'c d 3 4']
>>> from StringIO import StringIO
>>> import numpy
>>> s = StringIO('\n'.join(A))
>>> data = numpy.genfromtxt(s, dtype=[('letter1', 'S1'), ('letter2', 'S1'), ('num1', 'f8'), ('num2', 'f8')])
然後訪問該列:
>>> data['letter1']
array(['a', 'c'],
dtype='|S1')
>>> data['num1']
array([ 1., 3.])
注意,這是僅限於固定大小的字符串。不確定這是否是您數據的問題。
+1用於添加中間步驟從我的建議去某些功能 – JoshAdel 2012-08-17 20:52:20
Numpy數組不處理同一數組中的多個數據類型,除非您使用的是記錄數組。目前還不清楚你的意思是結束了「4垂直陣列」。你能爲你的問題添加更多細節嗎? – JoshAdel 2012-08-17 17:55:13
期望的結果背後是否有邏輯? – 2012-08-17 17:55:27
謝謝喬希。我正在將上面的列表('按行組織')['Apple Blue 1 6.5','Banana Red 4 7.733']翻譯成具有相同類型['Apple','Banana' ]和['Blue','Red']和[1,4] – DMBnyc 2012-08-17 18:03:42