IndexError: логический индекс не соответствует индексированному массиву по измерению 1;размерность 2, но соответствующее логическое измерение 1 - PullRequest
0 голосов
/ 08 марта 2019

у меня под массивами:

X = np.array([[68.  , 21.5],[71.  , 23.5],[ 73.  , 22.5 ],[ 64.  , 18.  ],[ 68.  , 23.5],
   [   65, 20.  ]])

T=np.array(['Female','Male','Male','Female','Female','Male'])

Y=np.array([[9],[8],[9],[9],[8],[8]], dtype='uint8')

Я пытаюсь найти статистику с помощью лямбда-функции, как показано ниже:

Stats1=lambda X,T:[[np.mean(x),np.std(x,ddof=1),len(x)] for x in [X[T=='Female'],[X[T=='Male']]]]
Stats2=lambda X,Y:[[np.mean(x),np.std(x,ddof=1),len(x)] for x in [X[Y==9],[X[Y==8]]]]

Stats1 отлично работает:

[[muF,sigmaF,NF],[muM,sigmaM,NM]]=Stats1(X,T)

Но Stats2 выдает ошибку:

[[muP,sigmaP,NP],[muN,sigmaN,NN]]=Stats2(X,Y)

    ---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-20-3678a0bdbb43> in <module>()
----> 1 [[muP,sigmaP,NP],[muN,sigmaN,NN]]=Stats2(X,Y)

<ipython-input-18-940d7bad1eef> in <lambda>(X, Y)
----> 1 Stats2=lambda X,Y:[[np.mean(x),np.std(x,ddof=1),len(x)] for x in [X[Y==9],[X[Y==8]]]]

IndexError: boolean index did not match indexed array along dimension 1; dimension is 2 but corresponding boolean dimension is 1

Может кто-нибудь помочь мне понять, почему и как это исправить.

...