鑑於以下數組:遍歷numpy的陣列
x = np.array([[0,2,4,5,5.5,6,7],[4,5,6,7,2,3,4]])
基於該數組我需要創建另一個數組跳過的行單元中的第一列的值是> 5上。
所以結果應該喜歡這樣:
([[5.5,6,7],[2,3,4]])
任何提示對於這個問題的簡單(和快速)的方法? 非常感謝您的幫助!
鑑於以下數組:遍歷numpy的陣列
x = np.array([[0,2,4,5,5.5,6,7],[4,5,6,7,2,3,4]])
基於該數組我需要創建另一個數組跳過的行單元中的第一列的值是> 5上。
所以結果應該喜歡這樣:
([[5.5,6,7],[2,3,4]])
任何提示對於這個問題的簡單(和快速)的方法? 非常感謝您的幫助!
我們可以使用boolean array作爲過濾索引。
>>> x[:, x[0] > 5]
array([[ 5.5, 6. , 7. ],
[ 2. , 3. , 4. ]])
x[0]
選擇第一行x[0] > 5
創建布爾的陣列,檢查一個元素是否爲> 5或沒有。 (這是[False, False, False, False, True, True, True]
。)當我們編寫some_array[boolean_array]
時,我們只保留some_array
中的boolean_array
對應值爲True的元素。例如,
>>> numpy.array([2, 4, 6, 8])[numpy.array([True, False, False, True])]
array([2, 8])
由於我們將選擇列,布爾陣列x[0] > 5
應該被放置在所述第二軸線上。我們選擇整個第一軸與:
。因此最終表達式是x[:, x[0] > 5]
。
還是枚舉函數:
res = []
for i, _ in enumerate(x):
res.append([])
for j, val in enumerate(x[i]):
if j > 5:
res[i].append(val)