按条件提取numpy数组中的特定列
Extracting specific columns in numpy array by condition
我有一个家庭作业,通过按条件(而不是按范围)选择特定列,从另一个二维 np 数组中提取一个二维 numpy 数组。
所以我有一个数组 A
,形状为 (3, 50000)
。我正在尝试为某些 x < 50000 with the original columns of
Athat satisfy the third cell in the column is
-0.4 < z < 0.1`.
获取形状为 (3, x)
的新数组
例如如果:
A = [[1,2,3],[2,0.5,0],[9,-2,-0.2],[0,0,0.5]]
我希望有回来:
B = [[2,0.5,0],[9,-2,-0.2]
我试图制作一个 bool 1 等级数组,它适用于我想要的列,以及如何将两者结合起来。它输出的问题是 1 阶数组,这不是我要找的。我得到了一些 ValueErrors..
bool_idx = (-0.4 < x_y_z[2] < 0.1)
这段代码造成了一些麻烦:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我可以用一些循环来完成,但是 NumPy 有很多漂亮的函数,我确定我在这里遗漏了一些东西..
在Python中,表达式-0.4 < x_y_z[2] < 0.1
大致等同于-0.4 < x_y_z[2] and x_y_z[2] < 0.1
。 and
运算符通过将其转换为 bool 来决定表达式每个部分的真值。与 Python 列表和元组不同,numpy 数组不支持转换。
指定条件的正确方法是按位 &
(明确且非短路),而不是隐式 and
(短路且不明确)案例):
condition = ((x_y_z[2, :] > - 0.4) & (x_y_z[2, :] < 0.1))
condition
是一个布尔掩码,select 是您想要的列。您可以 select 使用简单切片的行:
selection = x_y_z[:, condition]
我有一个家庭作业,通过按条件(而不是按范围)选择特定列,从另一个二维 np 数组中提取一个二维 numpy 数组。
所以我有一个数组 A
,形状为 (3, 50000)
。我正在尝试为某些 x < 50000 with the original columns of
Athat satisfy the third cell in the column is
-0.4 < z < 0.1`.
(3, x)
的新数组
例如如果:
A = [[1,2,3],[2,0.5,0],[9,-2,-0.2],[0,0,0.5]]
我希望有回来:
B = [[2,0.5,0],[9,-2,-0.2]
我试图制作一个 bool 1 等级数组,它适用于我想要的列,以及如何将两者结合起来。它输出的问题是 1 阶数组,这不是我要找的。我得到了一些 ValueErrors..
bool_idx = (-0.4 < x_y_z[2] < 0.1)
这段代码造成了一些麻烦:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我可以用一些循环来完成,但是 NumPy 有很多漂亮的函数,我确定我在这里遗漏了一些东西..
在Python中,表达式-0.4 < x_y_z[2] < 0.1
大致等同于-0.4 < x_y_z[2] and x_y_z[2] < 0.1
。 and
运算符通过将其转换为 bool 来决定表达式每个部分的真值。与 Python 列表和元组不同,numpy 数组不支持转换。
指定条件的正确方法是按位 &
(明确且非短路),而不是隐式 and
(短路且不明确)案例):
condition = ((x_y_z[2, :] > - 0.4) & (x_y_z[2, :] < 0.1))
condition
是一个布尔掩码,select 是您想要的列。您可以 select 使用简单切片的行:
selection = x_y_z[:, condition]