Python排序问题x [y [:,0]> 50]

net*_*tte 0 python numpy

有人可以解释一下python中这一行返回的内容吗?我知道它可能很容易但对于python来说是全新的.

    result = x[y[:,0]>50]
Run Code Online (Sandbox Code Playgroud)

结果,x,y都是数组.

mgi*_*son 6

假设你的"数组"是numpy.ndarrays,

把它分成几块:

y[:,0]
Run Code Online (Sandbox Code Playgroud)

这将返回一个数组视图.您可以将其视为一个新数组(暂时).存在显着差异,但它们并未在此发挥作用.这是原始数组的第一列的视图.例如:

>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> a[:,0]
array([0, 3, 6])
Run Code Online (Sandbox Code Playgroud)

现在,下一部分: y[:,0] > number.这将返回一个新的布尔数组.将对左侧数组(或视图)中的每个元素计算条件,并将其放入输出中.

>>> a[:,0] > 4
array([False, False,  True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

最后,我们有一个布尔索引操作.这需要从布尔内部数组所在的外部数组中获取元素True.

>>> arr2
array([ 8, 42, 63])
>>> a[:,0] > 4  # Just a reminder ...
array([False, False,  True], dtype=bool)
>>> arr2[a[:,0] > 4]
array([63])
Run Code Online (Sandbox Code Playgroud)