2013-07-02 3 views
3

나는 네트워크라는 함수를 사용하여 수정해야하는 목록이있다. 목록에는 100 개의 요소가 포함되어 있으며 각 요소는 임의로 +1 또는 -1입니다. 이 목록은 함수가 실행될 때마다 네트워크 복사본의 요소를 수정하는 방식으로 수정되어야합니다. 그런 다음이 목록을 그래프로 그래프로 표시해야합니다. 다음과 같이파이썬 목록 함수

내 코드는 다음과 같습니다

import math 
import random 
import numpy as np 

#Generate network elements 
network=[] 
for x in range(0,100): 
    network.append(random.choice([-1,1])) 

#Generate Matrix 
matrix=np.ones((100,100)) 
p=np.random.permutation(100) 
matrix[p[:10]]=1 
matrix[p[:10]]=-1 

#Set diagonal values to zero 
matrix[np.diag_indices_from(matrix)]=0 

#THIS IS THE FUNCTION THAT WILL BE MODIFYING AN ELEMENT, i, IN NETWORK. 
def new_sum(i): 
    hi=np.sum(np.dot(matrix[i][:100],network[:100])) 
    if hi>0: 
     hi==1 
    if hi<0: 
     hi==-1 
    return hi 

"""HERE IS WHERE I NEED HELP. I NEED TO HAVE THIS FUNCTION RUN AT RANDOM 
    ON ANY ELEMENT IN NETWORK. WHEN IT RUNS, I NEED TO COPY NETWORK AS A NEW 
    LIST AND HAVE hi REPLACE THE CORRESPONDING INDEX, i, IN THE COPIED LIST. THE 
    PROBLEM IS THAT I NEED TO HAVE THIS FUNCTION RUN 300 TIMES, AND EVERYTIME 
    IT RUNS, I NEED TO COPY NETWORK AS A NEW LIST AND HAVE hi REPLACE THE 
    CORRESPONDING INDEX, i, IN THE COPIED LIST. HERE IS CODE: """ 

def new_function(value): 
    for i in range(0,value): 
     new_list=network[:] 
     new_sum(i)= x 
     new_list[i]=x 
     return new_list 

def plot_data(ax, data, xval): 
    N:len(data) 
    uniqdata, idx=np.unique(data, return_inverse=True) 
    ax.scatter(np.ones(N)*xval,np.arange(1,N+1),s=50,c=cmap[idx]) 

cmap = np.array([(1,0,0),(0,1,0)]) 
fig, ax=plt.subplots 

내가 각 목록은 기능 plot_data에 인수, data이고, 생성해야 할 300 개 목록을 그래프해야합니다. 어떻게해야합니까?

+10

질문의 범위를 좁힐하십시오. 당신이 코드를 제공 할 때, 문제를 설명하기 위해, 당신이 스스로 해결할 것이며, 다른 사람들이 당신의 직장에서 당신의 일을 할 수 없도록하십시오. – moooeeeep

답변

0

당신이 다른 배포판에서 원하는대로 배열 생성 할 수 있습니다 numpy.random.random를 사용하여 : the documentation