什么样的数组切片(?)是这个吗?

2024-03-28 19:51:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

y = X[class_member_mask & core_samples_mask]

为了它的价值,type(X)=<type 'numpy.ndarray'>len(X)=150)。你知道吗

什么是y?这是什么样的“切片”?它是否移除或调整X的某些成员?哪个?为什么?你知道吗


Tags: 代码corenumpylentype切片成员mask
1条回答
网友
1楼 · 发布于 2024-03-28 19:51:36

我们无法100%确定地从我们看到的代码中判断出发生了什么,但这看起来像一个NumPyadvanced indexing operation。你知道吗

当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。(这是xindex_array形状不相同时更一般行为的特例,但这里的形状可能相同,完整行为确实很难理解。)

&bitwise and operator。对于布尔型,这与正则and运算符基本相同。对于形状相同的布尔NumPy数组:

>>> x = numpy.array([True, False, True])
>>> y = numpy.array([True, True, False])
>>> x & y
array([ True, False, False], dtype=bool)

它遍历并and相应的元素来创建一个结果数组。(同样,这是一个更一般行为的特例,但解释完整的概括性将使文章长度增加四倍。)

综合起来,我们可以猜测class_member_maskcore_samples_mask是表示X的哪些元素满足某些条件的布尔数组。
class_member_mask & core_samples_mask然后创建一个数组,表示X中符合两个条件的元素,并且y = X[class_member_mask & core_samples_mask]选择符合这两个条件的X的所有元素。你知道吗

相关问题 更多 >