#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