Как вернуть значения во втором столбце больше 25 из случайного массива в numpy? - PullRequest
0 голосов
/ 26 января 2020

У меня есть массив, который выглядит так:

import numpy as np

z=np.random.randint(101,size=(5,3))

array([[41, 98, 63],
       [61, 65, 66],
       [21,  3, 90],
       [53, 60, 26],
       [60, 18, 19]])

Я хочу вернуть значения во втором столбце больше 25, например, мой ответ будет:

array([[98],
       [65],
       [60]])

Я пытался создать такое условие:

condition = z[:,1:2] > 25

, но при попытке выполнить:

 z[condition]

я получаю ошибку

/ usr / local / lib / python3 .6 / dist-packages / ipykernel_launcher.py: 1: FutureWarning: использование последовательности без кортежей для многомерной индексации не рекомендуется; используйте arr[tuple(seq)] вместо arr[seq]. В будущем это будет интерпретироваться как индекс массива arr[np.array(seq)], что приведет либо к ошибке, либо к другому результату.

"" "Точка входа для запуска ядра I Python. - -------------------------------------------------- ----------------------- IndexError Traceback (последний последний вызов) в () ----> 1 z [условие]

IndexError: логический индекс не соответствует индексируемому массиву по измерению 1; измерение 3, но соответствующее логическое измерение 1

Может кто-нибудь помочь, пожалуйста?

Ответы [ 2 ]

1 голос
/ 26 января 2020

Вы должны посмотреть на то, что condition дает вам:

> a[:,1:2] > 25
array([
   [ True],
   [ True],
   [False],
   [ True],
   [False]])

Это, вероятно, не та форма, которую вы хотите. Если вместо этого вы выполняете условие:

> a[:,1] > 25
array([ True,  True, False,  True, False])

Вы получаете одномерный массив, который можно использовать для индексации одного столбца:

> condition = a[:,1] > 25
> a[:,1:2][condition]

array([
   [98],
   [65],
   [60]
])

Если вы просто хотите получить плоский результат, вы можете та же маска:

> a[:,1][condition]

array([98, 65, 60])
0 голосов
/ 26 января 2020
import numpy as np
import pandas as pd
z=np.random.randint(101,size=(5,3))
dfx = pd.DataFrame(data=z, columns='A B C'.split())
y = np.array(dfx.B[dfx.B>25]).reshape(len(dfx.B[dfx.B>25]),1)
print(y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...