Python Numpy中的过滤器阵列
我有一个数组:Python Numpy中的过滤器阵列,python,arrays,numpy,Python,Arrays,Numpy,我有一个数组:[[True],[False],[True]]。如果我想让这个数组过滤我现有的数组,例如[[1,2],[3,4],[5,6]]应该过滤到[[1,2],[5,6]],那么正确的方法是什么 一个简单的A[b]索引给出了错误:布尔索引与维度1上的索引数组不匹配;维度为2,但相应的布尔维度为1解决方案是将数组[[True],[False],[True]]转化为形状[True,False,True],以便它对另一个数组的行进行索引。正如Divakar所说,这是真的;通常,它会将任何阵列展平为
[[True],[False],[True]]
。如果我想让这个数组过滤我现有的数组,例如[[1,2],[3,4],[5,6]]
应该过滤到[[1,2],[5,6]]
,那么正确的方法是什么
一个简单的
A[b]
索引给出了错误:布尔索引与维度1上的索引数组不匹配;维度为2,但相应的布尔维度为1
解决方案是将数组[[True],[False],[True]]
转化为形状[True,False,True]
,以便它对另一个数组的行进行索引。正如Divakar所说,这是真的;通常,它会将任何阵列展平为一维阵列。另一个选项是删除大小为1的维度,但保留其他维度不变。解决方案是将数组[[True],[False],[True]]
设置为形状[True,False,True]
,以便它可以对其他数组的行进行索引。正如Divakar所说,这是真的;通常,它会将任何阵列展平为一维阵列。另一个选项是删除尺寸为1的尺寸,但保留其他尺寸不变,Use。。。
从文档中,ravel
将:
返回一个连续的展开数组
所以如果我们有你的b
数组
:
b = np.array([[True], [False], [True]])
我们可以使用以下方法从子数组中提取布尔值
:
b.ravel()
其中:
array([ True, False, True], dtype=bool)
因此,我们可以简单地使用b.ravel()
作为a
的掩码,它将根据您的需要工作:
a = np.array([[1,2], [3,4], [5,6]])
b = np.array([[True], [False], [True]])
c = a[b.ravel()]
将c
表示为:
array([[1, 2],
[5, 6]])
使用。。。
从文档中,ravel
将:
返回一个连续的展开数组
所以如果我们有你的b
数组
:
b = np.array([[True], [False], [True]])
我们可以使用以下方法从子数组中提取布尔值
:
b.ravel()
其中:
array([ True, False, True], dtype=bool)
因此,我们可以简单地使用b.ravel()
作为a
的掩码,它将根据您的需要工作:
a = np.array([[1,2], [3,4], [5,6]])
b = np.array([[True], [False], [True]])
c = a[b.ravel()]
将c
表示为:
array([[1, 2],
[5, 6]])
使用a[b.ravel()]
.Wow。那很快。谢谢它起作用了!:)如果您发现此问题,请投票将其作为重复问题关闭。我无法使用a[b.ravel()]
。哇。那很快。谢谢它起作用了!:)如果您发现此问题,请投票将其作为重复问题关闭。我不能