Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一维布尔数组的Numpy索引_Python_Arrays_Python 2.7_Numpy_Octave - Fatal编程技术网

Python 一维布尔数组的Numpy索引

Python 一维布尔数组的Numpy索引,python,arrays,python-2.7,numpy,octave,Python,Arrays,Python 2.7,Numpy,Octave,这篇文章与此类似,但它没有回答我的问题,因为我正在处理一维布尔数组 我试图在八度音阶中重新创建以下布尔索引功能 octave-3.2.4:6> a = rand(3,3) a = 0.249912 0.934266 0.371962 0.505791 0.813354 0.282006 0.439417 0.085733 0.886841 octave-3.2.4:8> a([true false true]) ans =

这篇文章与此类似,但它没有回答我的问题,因为我正在处理一维布尔数组

我试图在八度音阶中重新创建以下布尔索引功能

octave-3.2.4:6> a = rand(3,3)
a =

   0.249912   0.934266   0.371962   
   0.505791   0.813354   0.282006 
   0.439417   0.085733   0.886841  
octave-3.2.4:8> a([true false true])
ans =

    0.24991   0.43942
但是,我无法使用Numpy在Python中创建相同的结果

>>> import numpy as np
>>> a = np.random.rand(3,3)
array([[ 0.94362993,  0.3553076 ,  0.12761322],
       [ 0.19764288,  0.35325583,  0.17034005],
       [ 0.56812424,  0.48297648,  0.64101657]])
>>> a[[True, False, True]]
array([[ 0.19764288,  0.35325583,  0.17034005],
       [ 0.94362993,  0.3553076 ,  0.12761322],
       [ 0.19764288,  0.35325583,  0.17034005]])
>>> a[np.ix_([True, False, True])]
array([[ 0.94362993,  0.3553076 ,  0.12761322],
      [ 0.56812424,  0.48297648,  0.64101657]])
如何使用Numpy在Python上重新创建Octave的布尔索引

两个问题:

  • 使用列表
    [True,False,True]
    进行索引与使用布尔数组
    数组([True,False,True])
    进行索引不同。该列表将被解释为整数索引
    [1,0,1]

  • 您需要指定只需要第一列的结果:

    >>> a = np.arange(9).reshape(3,3)
    >>> a
    array([[0, 1, 2],
           [3, 4, 5],
           [6, 7, 8]])
    >>> mask = np.array([True,False,True])
    >>> mask.dtype ## verify we have a bool array
    dtype('bool')
    >>> a[mask,0]
    array([0, 6])