사본이있는 Numpy 배열 할당
예를 들어, 우리는이 경우 numpy
배열을 A
, 그리고 우리는 원하는 numpy
배열 B
같은 요소를.
다음 (아래 참조) 방법의 차이점은 무엇입니까? 추가 메모리는 언제 할당되고 언제 할당되지 않습니까?
B = A
B[:] = A
(B[:]=A[:]
? 와 동일 )numpy.copy(B, A)
세 가지 버전 모두 서로 다른 작업을 수행합니다.
B = A
이렇게하면
B
이미 이름이 지정된 기존 개체에 새 이름이 바인딩A
됩니다. 나중에 동일한 객체를 참조하므로 하나를 제자리에서 수정하면 다른 하나를 통해 변경 사항도 볼 수 있습니다.B[:] = A
(B[:]=A[:]
? 와 동일 )이렇게하면 값이
A
기존 배열로 복사 됩니다B
. 이 작업을 수행하려면 두 배열의 모양이 같아야합니다.B[:] = A[:]
같은 일을합니다 (그러나B = A[:]
1과 같은 일을합니다).numpy.copy(B, A)
이것은 법적 구문이 아닙니다. 당신은 아마
B = numpy.copy(A)
. 이것은 2와 거의 동일하지만 배열을 재사용하는 대신 새 배열을 만듭니다B
. 이전B
값에 대한 다른 참조가없는 경우 최종 결과는 2와 동일하지만 복사 중에 일시적으로 더 많은 메모리를 사용합니다.아니면
numpy.copyto(B, A)
합법적이고 2에 해당하는 을 의미했을 수도 있습니다 .
B=A
참조를 생성B[:]=A
복사하다numpy.copy(B,A)
복사하다
마지막 두 개는 추가 메모리가 필요합니다.
깊은 사본을 만들려면 다음을 사용해야합니다. B = copy.deepcopy(A)
이것이 저에게 유일한 해결책입니다.
B=numpy.array(A)
참고 URL : https://stackoverflow.com/questions/19676538/numpy-array-assignment-with-copy
'development' 카테고리의 다른 글
Schema.org-JSON-LD-어디에 배치할까요? (0) | 2020.09.16 |
---|---|
EL은 정수 키로 맵 값에 액세스합니다. (0) | 2020.09.16 |
Angular 2에서 상대 경로가 매우 긴 가져 오기를 피하는 방법은 무엇입니까? (0) | 2020.09.16 |
자바의 길이와 길이 () (0) | 2020.09.16 |
Vim에서 한 번에 여러 파일을 열려면 어떻게해야합니까? (0) | 2020.09.16 |