Вывести строки, которые встречают несколько операторов if в Python - PullRequest
0 голосов
/ 12 января 2020

AIM

Я хочу напечатать все строки файла master , которые удовлетворяют определенным условиям.

ПРОБЛЕМА

Раньше у меня было

if rank <= 50 and price <= 10000:

вместо

if np.any(rank <= 50) and np.any(price <= 10000):

, но я получал ошибку: ValueError: Истинное значение массива с более чем одним элементом является неоднозначным. Используйте a.any () или a.all ()

, и я не считаю, что использование a.any () целесообразно, так как оно возвращает логическое значение. Я также изо всех сил пытаюсь понять, как я могу печатать только строки master , которые соответствуют этим условиям.

Заранее спасибо за вашу помощь и объяснения!

Вот данные:

1,11,10950
2,14,11000
3,15,10500
5,18,9750
6,19,9045
7,19,9945
8,19,9945
9,20,9250
10,21,7850
11,22,10620
12,26,9700
13,28,9300
14,29,9000
15,50,7170
16,53,9200
17,58,9085
18,63,8570
19,67,7920
20,75,6900
21,86,6085
23,130,5750
import numpy as np

master = np.loadtxt('master.txt', delimiter=',')

uni = master[:, 0]
rank = master[:, 1]
price = master[:, 2]


if np.any(rank <= 50) and np.any(price <= 10000):
    print("Print rows that meet conditions")

1 Ответ

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

Как и в комментариях к вашим вопросам, используйте комбинацию логических массивов и np.logical_and для индексации строк, которые удовлетворяют вашим условиям.

import numpy as np

master = np.loadtxt('master.txt', delimiter=',')

print(master[np.logical_and(master[:, 0] <= 50, master[:, 2] <= 10000)])
...