Что именно означает [:, state] в python?

#python #numpy

#python #numpy

Вопрос:

Что именно означает следующая строка?

 
# p=T[:, state] what does this means?

# Here is the complete code
import numpy as np

T = np.array([ [ 0.40, 0.56, 0.03, 0.01],
               [0.45, 0.51, 0.04, 0.00],
               [0.25, 0.25, 0.25, 0.25 ],
               [0.00, 0.00, 0.01, 0.99 ]])

xk = np.arange(len(T))

def gen_sample(state):
    return np.random.choice(xk, 1, p=T[:, state])
 

Я понимаю, что для этого требуется матрица перехода, но что означают «: » и «состояние»?

Комментарии:

1. Вы проверили документацию numpy?

2. state передается ли переменная в функцию

3. Это означает A.__getitem__(slice(None), state) . Что это означает, зависит от того, как A.__getitem__ определено.

Ответ №1:

T это массив numpy:

 In [38]: T
Out[38]: 
array([[0.4 , 0.56, 0.03, 0.01],
       [0.45, 0.51, 0.04, 0.  ],
       [0.25, 0.25, 0.25, 0.25],
       [0.  , 0.  , 0.01, 0.99]])
 

T[..] является индексированием; в этом случае is выбирает столбец массива:

 In [39]: T[:,0]
Out[39]: array([0.4 , 0.45, 0.25, 0.  ])
In [40]: T[:,3]
Out[40]: array([0.01, 0.  , 0.25, 0.99])
 

Потратьте некоторое время на изучение numpy основ. Индексирование массива — очень простая операция.

Ответ №2:

В этом случае : это означает, что все «строки» в этой матрице выбраны и state являются параметром индекса «столбца».

Имеет много возможностей для доступа к массиву и [start:end] выполняется путем нарезки.

Рассмотрим:

a = np.array([0,1,2,3,4])

если вы попытаетесь a[1:4] вернуть фрагмент a , начинающийся со второй позиции и заканчивающийся на пятой (помните, что индексы python начинаются с нуля)

По умолчанию, если вы не передаете начальную и / или конечную позицию, они используют 0 для начала и len(a) до конца.

Узнайте больше об этом в этом руководстве по w3schools