我有一个大小为3600 * 7200的numpy 2D数组。我还有另一个要用作遮罩的形状相同的数组。
问题是当我做这样的事情时:
import numpy as np
N = 10
arr_a = np.random.random((N,N))
arr_b = np.random.random((N,N))
arr_a[arr_b > 0.0]
结果数组不再是2D,而是1D。如何获得二维数组作为回报?
您可以使用np.where保留形状:
np.where(arr_b > 0.0, arr_a, np.nan)
当arr_b的值大于0时,它将从arr_a中获取相应的值,否则将使用np.nan。
import numpy as np
N = 5
arr_a = np.random.randn(N,N)
arr_b = np.random.randn(N,N)
np.where(arr_b > 0.0, arr_a, np.nan)
Out[107]:
array([[ 0.5743081 , nan, -1.69559034, nan, 0.4987268 ],
[ 0.33038264, nan, -0.27151598, nan, -0.73145628],
[ nan, 0.46741932, 0.61225086, nan, 1.08327459],
[ nan, -1.20244926, 1.5834266 , -0.04675223, -1.14904974],
[ nan, 1.20307104, -0.86777899, nan, nan]])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句