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
的所有元素。非常有用的答案!谢谢