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
을