jez*_*ael 5 arrays indexing numpy mask where
我有阵列:
a = np.array([[ 0, 1, 2, 0, 0, 0],
[ 0, 4, 1, 35, 0, 10],
[ 0, 0, 5, 4, 0, 4],
[ 1, 2, 5, 4, 0, 4]])
Run Code Online (Sandbox Code Playgroud)
我需要从0每行中的第一个连续选择:
[[ True False False False False False]
[ True False False False False False]
[ True True False False False False]
[ False False False False False False]]
Run Code Online (Sandbox Code Playgroud)
我尝试:
a[np.arange(len(a)), a.argmax(1): np.arange(len(a)), [0,0,0]] = True
Run Code Online (Sandbox Code Playgroud)
但这是错误的.
您可以使用np.cumsum。
假设:您仅在每行的开头查找零。
a = np.array([[ 0, 1, 2, 0, 0, 0],
[ 0, 4, 1, 35, 0, 10],
[ 0, 0, 5, 4, 0, 4]])
a.cumsum(axis=1) == 0
array([[ True, False, False, False, False, False],
[ True, False, False, False, False, False],
[ True, True, False, False, False, False]], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
基础:True只要每行的累积和为 0,就保持不变。
容易出错:具有负整数的数组会导致失败。即对于[-1, 1],这将计算为True位置 1。
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |