我有一个三维numpy数组,我正在检查多个条件。我正在检查每个元素,看它们是否小于某个数。如果每个3d元素都由i
索引,其中i=[0,1,2]
在一个我称之为array3
的数组中,如果其中一个元素大于我设置的数字,可能会给出一个布尔数组[False, True, True]
或[False, False, True]
,那么这个索引将从array3
中消除。你知道吗
我有一个愚蠢的方法,每个元素少于20:
import numpy as np
wx = np.where( np.abs(array3[:,0]) <= 20.0 ) # x values less than 20
xarray3x = array3[:,0][wx]
yarray3x = array3[:,1][wx]
zarray3x = array3[:,2][wx]
wy = np.where( np.abs(yarray3x) <= 20.0 ) # y values less than 20
xarray3xy = xarray3x[wy]
yarray3xy = yarray3x[wy]
zarray3xy = zarray3x[wy]
wz = np.where( np.abs(zarray3xy) <= 20.0 ) # z values less than 20
xarray3xyz = xarray3xy[wz]
yarray3xyz = yarray3xy[wz]
zarray3xyz = zarray3xy[wz]
这是可行的,但要跟上我命名的变量可能会很烦人。所以现在我正在尝试写一些占用更少行的东西(希望编译时间更少)。你知道吗
我在考虑为每个索引构造一个for循环,如下所示:
for i in range(3):
w = np.where( abs(array3[:,i]).all() <= 20. )
n_array = array3[w]
但是我将只构造一个值而不是多个值。你知道吗
我认为在这个例子中使用4D阵列是最简单的。在这种情况下,可以检查向量中具有最低值的元素是否低于阈值。然后,使用
np.newaxis
,可以将掩码应用于整个向量并创建一个掩码数组。你知道吗相关问题 更多 >
编程相关推荐