我在python中有這個數組,我想提取以p結尾的行到一個新數組中。從字母數組中提取一行python
array([[ 0, 6, p],
[ 1, 7, m],
[ 2, 10, m],
[ 3, 4, p],
[ 4, 1, m],
[ 5, 10, p],
[ 6, 6, m],
[ 7, 4, m],
[ 8, 6, p],
[ 9, 7, p]])
我在python中有這個數組,我想提取以p結尾的行到一個新數組中。從字母數組中提取一行python
array([[ 0, 6, p],
[ 1, 7, m],
[ 2, 10, m],
[ 3, 4, p],
[ 4, 1, m],
[ 5, 10, p],
[ 6, 6, m],
[ 7, 4, m],
[ 8, 6, p],
[ 9, 7, p]])
這是很容易在Python中。
,你可以這樣做:
p = array[SOME_RANDOM_CELL];
print p[0]
轉換了數組。因爲這是一個NumPy問題,我們正在尋找一種方法來以無循環方式提取所有具有'p'作爲最後一個元素的行。索引檢索單個元素很容易。 – user2357112
哦,對不起我的錯誤。即時通訊新的到這個網站,我沒有看標籤的習慣 – DTSCode
您可以使用過濾器來解決這個問題。
data = [
[ 0, 6, "p"],
[ 1, 7, "m"],
[ 2, 10, "m"],
[ 3, 4, "p"],
[ 4, 1, "m"],
[ 5, 10, "p"],
[ 6, 6, "m"],
[ 7, 4, "m"],
[ 8, 6, "p"],
[ 9, 7, "p"]
]
new_data = filter(lambda l: l[2] == "p", data)
上述結構假定您正在處理列表(數組數組),但是同樣應用於元組和字典。
這裏是一個過濾函數的引用: https://docs.python.org/2/library/functions.html#filter
我們不處理列表,元組或詞典。我們正在處理一個NumPy數組。 'filter'會很慢並返回一個列表;我們需要一個NumPy解決方案。 – user2357112
@ user2357112顯然他正在使用一個列表....(請參閱我的回答評論) –
所以他是。這使得這個答案更合理(儘管我會去尋求一個列表理解而不是'過濾器')。不幸的是,我的投票鎖定了。 – user2357112
簡單的方法是使用numpy的布爾指標如下
a = numpy.array(a) # ensure its a numpy array
print a[a[:,-1]=="p"]
打破它
mask = a[:,-1]=="p" #gives an array of True/False that is the same as the array, based on if last char is "p"
a[mask] #indexes into the original array returning only the rows that end with "p"
有你有沒有試圖自己編碼?如果是這樣,你能分享一下嗎? – Ffisegydd
真的是'p'嗎? –
'p'是你在某處定義的整數變量嗎? – user2357112