나는 새로운 파이썬 사용자 그리고 난 놀라운 파이썬 + NumPy와 +하기 matplotlib의 조합을 찾는거야. C가 조금 있습니다. 파이썬을 사용하라는 질문을 받았지만 모든 것이 잘 진행되고 있습니다. Numpy는 필요한 거의 모든 것을 할 수있는 놀라운 기능을 가지고 있습니다. 그러나 Numpy와 함께 for-loop를 사용하려고했을 때 첫 번째 돌을 밟았습니다. 나는 내가 뭘 잘못하고 있는지 모르지만, 내 C 논리가 내가 실수를 저지르고 있다고 믿는다.
요약 : 모든 1이 함께 사용되는 방식으로 0과 1로 구성된 하나의 큰 배열 "A"(1D)가 있습니다. 다른 조건의 다른 배열 "B"(256x9)가 있습니다. 내가 원하는 것은 각 A 요소의 8 개 이웃을 B의 처음 8 개 열과 비교하고 올바른 선택을 찾으면 A 배열을 실행하는 것입니다. 9 번째 열의 값을 세 번째 행렬 C에 할당합니다 (같은 크기 A로).
문제는 파이썬에서 인덱스로 작업하는 방법을 모르겠다는 것입니다. 인터넷에서 한 번 보았는데 도움이되지 않았습니다. 나는 (i + 1, j), (i-1, j), (i-1, j + 1) 같은 것들을 사용하여 요소의 이웃들에 접근하려고 노력하고있다. .
for i in A:
for y in B:
if A[i-1,j+1] == B[1,y]:
if A[i,j+1] == B[2,y]:
if A[i+1,j+1] == B[3,y]:
if A[i-1,j] == B[4,y]:
if A[i+1,j] == B[5,y]:
if A[i-1,j-1] == B[6,y]:
if A[i,j-1] == B[7,y]:
if A[i+1,j-1] == B[8,y]:
C[i] = B[9,y],
가, 누군가가 나에게 내가 잘못 뭘하는지에 대한 몇 가지 팁을 제공 할 수 있습니다하십시오
나는 이런 식으로 뭔가를 찾고 있었다?
감사합니다,
편집 :
이의 두 배열 A와 B는 다음과 같은 형식을 가정 해 봅시다, 더 명확합니다. 배열 A가 1D인지 2D인지는 상관 없습니다. 왜냐하면 배열을 바꿀 수 있기 때문입니다. 배열 B의 각 행은 인접 조건을 나타내고 9 번째 열은 해당 행의 조건이 충족되는 경우 배열 C에 할당되어야하는 값입니다.
A = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B = 1 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 0 1 1
0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 .
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 .
0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 .
0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 1
0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 1
0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 0 0 0 0 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
특히, 나는 1 '로 만든 모양의 둘레를 찾으려고합니다. 몇 가지 간단한 예는 당신에게 도움이 될 수 (심지어 쉘에서) 실행 C.보다 파이썬 내부
코드의 더 많은 부분을 게시하려면 조금 더 잘 할 수 있다고 생각합니다. 일반적으로 numpy를 사용할 때는 루프가 필요하지 않습니다. 느린 루프를 피하기 위해 많은 기능을 가지고 있습니다. 대부분의 numpy 함수는 CPU 집약적 인 작업을 수행하기 위해 실제로 C로 떨어집니다. – Vorticity
A가 1D이지만 2D 인덱싱을 사용한다고 가정합니다. (이것이 실제로 8 이웃들에게 더 의미가 있기 때문에 실제로 2D라고 가정합니다.) 또한 인덱스에서는 반복하지 않지만 배열에서는 요소를 반복합니다. 또한 파이썬은 0부터 시작합니다. 즉, B에 액세스 할 때 인덱스 1에서 9로 빼는 것이 좋습니다. 또한 행 인덱스가 먼저 파이썬에서 처리되므로 B 인덱스를 스왑해야합니다. – jgosmann
@MiTz 'A' 행렬을 정의한 방식이 제게 발생하지 않습니다.'1D 배열 '입니다. 'A'와'B' 배열의 예를 게시 할 수 있습니까? 당신의 설명과 당신이하고자하는 것을 코딩하려는 시도로부터 분명하지 않습니다 !! – Dalek