나는 간단하고 어리 석었던 파이썬 문제가 있습니다. 그래프가 주어진다면 그래프 분포도와 같은 확률 변수로부터 샘플을 추출하려고합니다.그래프의도 분포에서 샘플링하기
이것은 매우 간단해야합니다. 그러나 어쨌든 나는 이것을 계속 엉망으로 다루고있다. 내 코드는 다음과 같습니다
import numpy as np
import scipy as sp
import graph_tool.all as gt
G = gt.random_graph(500, deg_sampler=lambda: np.random.poisson(1), directed=False)
deg = gt.vertex_hist(G,"total",float_count=False)
# Extract counts and values
count = list(deg[0])
value = list(deg[1])
# Generate vector of probabilities for each node
p = [float(x)/sum(count) for x in count]
# Load into a random variable for sampling
x = sp.stats.rv_discrete(values=(value,p))
print x.rvs(1)
을하지만,이 오류를 반환이 실행시 :
Traceback (most recent call last):
File "temp.py", line 16, in <module>
x = sp.stats.rv_discrete(values=(value,p))
File "/usr/lib/python2.7/dist-packages/scipy/stats/distributions.py", line 5637, in __init__
self.pk = take(ravel(self.pk),indx, 0)
File "/usr/lib/python2.7/dist-packages/numpy/core/fromnumeric.py", line 103, in take
return take(indices, axis, out, mode)
IndexError: index out of range for array
나는이 왜 모르겠어요. 코드의 경우 내가 대신 쓰기 위 :
x = sp.stats.rv_discrete(values=(range(len(count)),p))
그런 다음 코드는 잘 실행하지만 이상한 결과를 제공 -이 분포를 지정한 명확하게 방법을 "0"의 값이 가장되어야한다 공유지. 그러나이 코드는 높은 확률로 "1"을 제공하고 "0"을 반환하지 않으므로 어떤 식 으로든 어떻게 든 이동합니다.
여기에서 무슨 일이 일어나는지 명확히 알 수 있습니까? 어떤 도움이라도 대단히 감사하겠습니다!
당신이 경우 "라고
대신, 여담으로
을 원하는, 당신이를 교체 할 것을 권 해드립니다 나는 대신 "글을 쓸 것입니다.하지만 다른 줄이 있다면 동일한 줄을 복사합니까? – askewchan
아, 네 말이 맞아. 나는 편집을했다. – gogurt
'range (len (count))'는'value'와 같은 값을 갖고 있습니까? – askewchan