Python 这是什么类型的数组片(?)?

Python 这是什么类型的数组片(?)?,python,numpy,slice,Python,Numpy,Slice,我正在查看一些代码,我看到: y=X[class\u member\u mask&core\u samples\u mask] 不管它值多少钱,type(X)=和len(X)=150 什么是y?这是什么样的“切片”?它是否删除或调整X的某些成员?哪个和为什么?我们无法100%肯定地从我们看到的代码中看出发生了什么,但这看起来像一个小问题 当使用形状相同的布尔数组对NumPy数组进行索引时,如下所示: >>> x = numpy.array([[1, 2], ...

我正在查看一些代码,我看到:

y=X[class\u member\u mask&core\u samples\u mask]

不管它值多少钱,
type(X)=
len(X)=150


什么是
y
?这是什么样的“切片”?它是否删除或调整X的某些成员?哪个和为什么?

我们无法100%肯定地从我们看到的代码中看出发生了什么,但这看起来像一个小问题

当使用形状相同的布尔数组对NumPy数组进行索引时,如下所示:

>>> x = numpy.array([[1, 2],
...                  [3, 4]])
>>> index_array = numpy.array([[True, False],
...                            [False, True]])
>>> x[index_array]
array([1, 4])
结果是一个元素数组,对应于索引数组具有
True
元素的
x
的每个位置。元素在结果数组中的显示顺序与它们在展平版本的
x
中的显示顺序相同。结果不是一种观点;修改它不会影响
x
。(这是更一般行为的特例,因为
x
index_array
的形状不相同,但此处的形状可能相同,完整行为很难理解。)

&
是最重要的。对于布尔型,这与常规and运算符几乎相同。对于形状相同的布尔NumPy数组:

>>> x = numpy.array([True, False, True])
>>> y = numpy.array([True, True, False])
>>> x & y
array([ True, False, False], dtype=bool)
它通过和和对应的元素来创建一个结果数组。(同样,这是一个更一般行为的特例,但解释全部概括性将使文章长度增加四倍。)

把它们放在一起,我们可以猜测
class\u member\u mask
core\u samples\u mask
是布尔数组,表示
X
的哪些元素满足某些标准。

class\u member\u mask&core\u samples\u mask
然后创建一个数组,表示符合这两个条件的
X
元素,并且
y=X[class\u member\u mask&core\u samples\u mask]
选择符合这两个条件的
X
的所有元素。

非常有用的答案!谢谢