2016-08-04 1 views
0

저는 Python 2.7을 사용하고 있습니다. 이전 게시물에서 파이썬을 배우고 배열에서 옮겨서 이제는 루프에서 작업하고 있습니다. 또한 배열을 사용하여 작업을 수행하려고합니다.중첩 된 for-loops 및 해당 형식

A1 = np.random.random_integers(35, size=(10.,5.)) 

A = np.array(A1) 

B1 = np.random.random_integers(68, size=(10.,5.)) 

B = np.array(B1) 

D = np.zeros(10,5) #array has 10 rows and 5 columns filled with zeros to give me the array size I want 
for j in range (1,5): 
    for k in range (1,5): 
      D[j,k] = 0 
      for el in range (1,10): 
       D[j,k] = D[j,k] + A[j] * B[k] 

내가 점점 오전 오류는 다음과 같습니다 시퀀스

내 형식이 올바르지로 배열 요소를 설정?

답변

0

A, B 및 D가 모두 2D 배열이므로 D [j, k] 은 단일 요소이고 A [j] (A [j ::]와 동일)는 1D 배열입니다. 이 경우 5 개의 요소가 있습니다. B [k] = B [k ,:], 즉 5 요소 배열에 대해서도 유사하다. A [j] * B [k]도 5 요소 배열이므로 단일 요소 대신 저장할 수 없으므로 배열 요소를 시퀀스로 설정하면 오류가 발생합니다.

당신이 A와 B에서 하나의 요소를 선택하려면, 다음 마지막 행은 다음과

D[j,k] = D[j,k] + A[j,k] * B[j,k] 

코드에 대한 더 자세한 설명 :

# A is already a numpy array, so 'A = np.array(A1)' is redundant and can be omitted 
    A = np.random.random_integers(35, size=(10.,5.)) 

    # Same as above     
    B = np.random.random_integers(68, size=(10.,5.)) 

    D = np.zeros([10,5]) # This is the correct syntax for creating a 2D array with the np.zeros() function 
    for j in range(1,5): 
     for k in range(1,5): 
      # D[j,k] = 0 You have already defined D to be zero for all elements with the np.zeros function, so there is no need to do it again 
      for el in range(1,75): 
        D[j,k] = D[j,k] + A[j] * B[k] 

편집 : 글쎄, 내가 할 귀하의 게시물 @ Caroline.py에 대한 의견을 말할만큼 충분한 평판이 없으므로 여기에서 대신 설명하겠습니다.

우선, 파이썬은 제로 색인을 사용하므로 'range (1,5)'는 '[1,2,3,4]'를 제공하는데, 이는 첫 번째 인덱스, 즉 인덱스 0에 도달하지 않는다는 것을 의미합니다. 따라서 'range (0,5) '대신'range (5) '와 동일합니다.

el 범위를 75에서 10으로 변경 한 것을 볼 수 있습니다. el을 사용하지 않으면 마지막 줄을 10 회 추가하는 것입니다.

난 당신이 뭘 원하는지 모르겠지만, 당신이 D의 A의 복수와 B를 저장하려면, 다음이 바로되어야합니다 :

for j in range(10): 
     for k in range(5): 
       D[j,k] = A[j,k] * B[j,k] 

하거나

D = A * B