programing

복사본을 포함한 Numpy 배열 할당

lastcode 2023. 7. 21. 21:38
반응형

복사본을 포함한 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

반응형