[問題] Numpy 選取一樣的陣列
原因 :
最近在學python
聽到很多人再推薦一定要會活用numpy
所以我就在研究這大家都推的咚咚了
研究一陣子後
我突發奇想想說創一個陣列
ex: arr = np.array([ [1,2,3],[4,5,6],[7,8,9],[1,2,30],[1,2,3] ])
# arr.shape 是 (5,3)
問題:
我想arr裡面row是[1,2,3]的row index找出來
錯誤嘗試:
我的寫法是 arr[ arr[:]==[1,2,3] ]
想法是
arr[:]==[1,2,3] 會回傳一個一維陣列 是把 row為[1,2,3]的都標記為True
在把arr標記為True的row輸出出來
但是出現的答案跟我想的完全不同!!!!
想請教一下我的法是不是哪裡出問題了
如果我的想法說的不清楚我會補充說明的!
感覺numpy真的很好玩,希望能搞懂!!!!
=====================================
EDIT:
感謝各位大大的幫助
我後來研究了好久 numpy 內建的函式 ex:all , where , unique等
發現原來可以做的事比我想得多好多喔....
學到了好多!!
三維版本:
arr = [ [[1, 2, 3],[4, 5, 6]], [[1, 2, 3],[7, 8, 9]] ]
abc2090614大 的三維寫法:
np.where((arr==[1,2,3]).all(axis=2))
#針對Z軸做 是否所有元素都是 True 的檢查
Metal5566大 的三維寫法:
for ia,col in enumerate(arr):
for ib,deep in enumerate(col):
#對每行每列的Z軸做檢查 和[1,2,3]一樣的就print出來!
if np.array_equal(deep, [1,2,3]):
print([ia, ib])
抱歉我寫的不夠pythonic......
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.138.24.185
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1493349052.A.590.html
推
04/28 14:47, , 1F
04/28 14:47, 1F
推
04/28 17:18, , 2F
04/28 17:18, 2F
推
04/28 17:24, , 3F
04/28 17:24, 3F
抱歉想請問一下這樣下條件會出現下面的樣子耶
array([[4, 5, 6],[1, 2, 3],[1, 2, 3],[1, 2, 3],[4, 5, 6]])
推
04/28 21:24, , 4F
04/28 21:24, 4F
→
04/28 21:27, , 5F
04/28 21:27, 5F
感謝 abc大 我成功了!!
想請問一下,好齊心驅使下我嘗試用 np.where( arr==[1,2,3] ) 會跑出下面這個答案
(array([0, 0, 0, 3, 3, 4, 4, 4], dtype=int64),
array([0, 1, 2, 0, 1, 0, 1, 2], dtype=int64))
但是我發現他的shape會跟我的(5,3)有相差耶 好奇這個原理,是因為他會一個一個比
對?
→
04/28 21:29, , 6F
04/28 21:29, 6F
我後來有去了解axis的概念了!!!感謝<(_ _)>
推
04/29 10:11, , 7F
04/29 10:11, 7F
→
04/29 10:12, , 8F
04/29 10:12, 8F
感謝Metal大!!!我這樣寫成功了!!
※ 編輯: HenryLiKing (114.45.97.236), 04/30/2017 16:46:39