development

사본이있는 Numpy 배열 할당

big-blog 2020. 9. 16. 08:09
반응형

사본이있는 Numpy 배열 할당


예를 들어, 우리는이 경우 numpy배열을 A, 그리고 우리는 원하는 numpy배열 B같은 요소를.

다음 (아래 참조) 방법의 차이점은 무엇입니까? 추가 메모리는 언제 할당되고 언제 할당되지 않습니까?

  1. B = A
  2. B[:] = A( B[:]=A[:]? 와 동일 )
  3. numpy.copy(B, A)

세 가지 버전 모두 서로 다른 작업을 수행합니다.

  1. B = A

    이렇게하면 B이미 이름이 지정된 기존 개체에 새 이름이 바인딩 A됩니다. 나중에 동일한 객체를 참조하므로 하나를 제자리에서 수정하면 다른 하나를 통해 변경 사항도 볼 수 있습니다.

  2. B[:] = A( B[:]=A[:]? 와 동일 )

    이렇게하면 값이 A기존 배열로 복사 됩니다 B. 이 작업을 수행하려면 두 배열의 모양이 같아야합니다. B[:] = A[:]같은 일을합니다 (그러나 B = A[:]1과 같은 일을합니다).

  3. numpy.copy(B, A)

    이것은 법적 구문이 아닙니다. 당신은 아마 B = numpy.copy(A). 이것은 2와 거의 동일하지만 배열을 재사용하는 대신 새 배열을 만듭니다 B. 이전 B값에 대한 다른 참조가없는 경우 최종 결과는 2와 동일하지만 복사 중에 일시적으로 더 많은 메모리를 사용합니다.

    아니면 numpy.copyto(B, A)합법적이고 2에 해당하는 을 의미했을 수도 있습니다 .


  1. B=A 참조를 생성
  2. B[:]=A 복사하다
  3. numpy.copy(B,A) 복사하다

마지막 두 개는 추가 메모리가 필요합니다.

깊은 사본을 만들려면 다음을 사용해야합니다. B = copy.deepcopy(A)


이것이 저에게 유일한 해결책입니다.

B=numpy.array(A)

참고 URL : https://stackoverflow.com/questions/19676538/numpy-array-assignment-with-copy

반응형