我有一組數據,稱爲d
形狀爲(79000,17)
。我想知道是否有一種方法來編寫一個短循環或一個函數強制條件的所有列只選擇列滿足相同條件的行,例如,如果一個循環結合了列i
的條件, d[:,i]<99
?選擇在所有列上滿足相同條件的行
0
A
回答
1
如果您想要一個支持所有條件(甚至是您的條件)的靈活選擇功能,您可以使用下面的代碼。根據需要實現my_filter()。
def select(list_of_rows, filter_function):
result = []
for row in list_of_rows:
if filter_function(row):
result.append(row)
return result
def my_filter(row):
if row[2] > 10:
return True
return False
my_list = [(1, 4, 7), (2, 9, 12), (4, 2, 20), (10, 20, 30), (3, 2, 1)]
result = select(my_list, my_filter)
print result
0
首先製作一個Boolean
陣列的行數的大小,然後將每個時間計算條件在循環中,並與初始布爾陣列相乘。
import numpy as np
bx=np.ones(d.shape[0], dtype=bool)
for i in range(d.shape[1]):
bx*=((d[:,i]>17)*(d[:,i]<22.0))
1
來看你的答案,病情可以檢查元素方面 ,然後你可以跨列軸適用all
減少(即 找到其中的所有列元素,列axis=1
, 是True
行)
In [15]: arr = np.arange(25).reshape(5, 5); arr
Out[15]:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
In [16]: ((arr > 7) & (arr < 17)).astype(int)
Out[16]:
array([[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 1, 1],
[ 1, 1, 1, 1, 1],
[ 1, 1, 0, 0, 0],
[ 0, 0, 0, 0, 0]], dtype=bool)
In [17]: ((arr > 7) & (arr < 17)).all(axis=1)
Out[17]: array([False, False, True, False, False], dtype=bool)
如果條件真的是逐列功能,您可以使用 np.apply_along_axis
通過行軸切你的陣列,axis=0
,適用 那功能,所有切片,然後使用相同的所有減少在 輸出:
In [38]: def between_multiples_of_2(x):
return ((x % 2) == 0).cumsum() == 1
....:
In [39]: np.apply_along_axis(between_multiples_of_2, axis=0, arr=arr).astype(int)
Out[39]:
array([[1, 0, 1, 0, 1],
[1, 1, 1, 1, 1],
[0, 1, 0, 1, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
In [40]: np.apply_along_axis(between_multiples_of_2, axis=0, arr=arr).all(axis=1)
Out[40]: array([False, True, False, False, False], dtype=bool)
相關問題
- 1. 選擇每個相同ID的列滿足條件的ID
- 2. 選擇一列,其中滿足條件
- 3. 選擇基團,其中的所有元素滿足條件
- 4. 對於所有行,選擇滿足條件的第一個條目
- 5. 如何在條件滿足時選擇sql表中的所有行
- 6. 如何選擇列總和滿足條件的隨機行MySQL
- 7. 如果條件滿足,選擇參數
- 8. Python pandas:選擇列滿足某個條件的列
- 9. 滿足條件的行數
- 10. 選擇行是否滿足第一條件並丟棄下列條件
- 11. 當其中一行滿足條件時不要選擇行
- 12. 選擇所有滿足來自其他表的約束的行
- 13. 我如何選擇滿足特定行中特定列的值的所有行
- 14. 如何僅選擇滿足條件的最後一行?
- 15. SQLite:選擇一行或在沒有行滿足條件時返回NULL
- 16. 在不同列中選擇具有相同條目的行
- 17. 至少有一些列滿足條件
- 18. 只有在滿足where條件的情況下才能選擇最後一行
- 19. 從一組元素中選擇一個滿足條件的所有元素
- 20. 選擇實體的所有記錄總是滿足指定條件
- 21. 熊貓:選擇行鍼對groupby.sum()滿足條件
- 22. 連接條件滿足時未選擇行?
- 23. 在R,滿足的條件
- 24. If語句滿足的所有條件,但它不被執行
- 25. postgresql:如何選擇滿足條件的條目
- 26. 如何選擇XPath只有當條件滿足
- 27. sql只有滿足條件時才選擇查詢
- 28. 熊貓:選擇行如果一個特定的列滿足一定條件
- 29. 在SQL Server 2012中選擇滿足條件x的最大值
- 30. 在MySQL中選擇所有具有不同和條件的行