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 개 목록을 그래프해야합니다. 어떻게해야합니까?
질문의 범위를 좁힐하십시오. 당신이 코드를 제공 할 때, 문제를 설명하기 위해, 당신이 스스로 해결할 것이며, 다른 사람들이 당신의 직장에서 당신의 일을 할 수 없도록하십시오. – moooeeeep