У меня есть массив Numpy с примерно 7 столбцами, и мне нужно много индексировать определенные значения, но текущий способ, которым я это делаю, не легко читается. для напр. Я хотел бы сказать rates[-1][high] или что-то подобное. Я подумал, что, может быть, я смогу просто сделать переменные для, например. high = 2, но я использую одни и те же данные ставок во многих различных функциях, поэтому мне пришлось бы устанавливать эти переменные в каждой отдельной функции или передавать их в качестве параметров, но это тоже не очень полезно. Есть лучший способ сделать это? Заранее спасибо!

if (
  rates[-1][4] > rates[-1][1]
  and rates[-2][4] > rates[-2][1]
  and rates[-1][4] > rates[-2][4]
):
0
Francois Paulsen 17 Мар 2021 в 13:31

1 ответ

Лучший ответ

Если я правильно понимаю вопрос, вы можете установить «столбец» 4 как собственный массив.

import numpy as np
rates = rates = 1+.01*np.arange( 36 ).reshape( 4, 9 )
rates
# array([[1.  , 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08],
#        [1.09, 1.1 , 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17],
#        [1.18, 1.19, 1.2 , 1.21, 1.22, 1.23, 1.24, 1.25, 1.26],
#        [1.27, 1.28, 1.29, 1.3 , 1.31, 1.32, 1.33, 1.34, 1.35]])

high = rates[:, 4] 
high                                                                   
# array([1.04, 1.13, 1.22, 1.31])

Ваша формула становится:

if (
  high[-1] > rates[-1][1]
  and high[-2] > rates[-2][1]
  and high[-1] > rates[-2][4] # or > high[-2]
):
1
Tls Chris 17 Мар 2021 в 15:53