MoM*_*iJi 4 python arrays numpy masked-array
我需要a通过另一个数组满足的条件来屏蔽一个数组b。
例如,a仅当相同位置的值b等于 0时才应保留值,否则返回为None。例如:
a = np.array([2, 2, 4, 0, 4, 3, 3, 3, 1, 2])
Run Code Online (Sandbox Code Playgroud)
被掩盖了
b = np.array([0, 0, 0, 1, 0, 3, 0, 5, 0, 0])
Run Code Online (Sandbox Code Playgroud)
返回
c: [2, 2, 4, None, 4, None, 3, None, 1, 2]
Run Code Online (Sandbox Code Playgroud)
我试过了
to_change = np.ma.masked_where(travel_time!=0, new_subareas)
Run Code Online (Sandbox Code Playgroud)
但这会返回:
masked_array(data=[2, 2, 4, --, 4, --, 3, --, 1, 2],
mask=[False, False, False, True, False, True,
False, True, False, False],
fill_value=999999)
Run Code Online (Sandbox Code Playgroud)
但是我找不到任何只会返回类似于为c.
我需要完全在numpy和不使用 for 循环或 if 语句中完成某些操作,以提高速度,因为这将适用于非常大的数组。我错过了什么?
masked_arrays 有更多的开销,因为对这些操作隐式忽略掩码值(而是处理其他所有内容)。
如果您不是在寻找那种功能,您可以只使用np.where,但您可能会冒险将数组转换为object.
np.where(b == 0, a, None)
array([2, 2, 4, None, 4, None, 3, None, 1, 2], dtype=object)
Run Code Online (Sandbox Code Playgroud)
我建议用NaN代替?
np.where(b == 0, a, np.nan)
array([ 2., 2., 4., nan, 4., nan, 3., nan, 1., 2.])
Run Code Online (Sandbox Code Playgroud)
保留数字类型。
| 归档时间: |
|
| 查看次数: |
5996 次 |
| 最近记录: |