PyArray_NewFromDescr을 사용하여 데이터를 복사하지 않고 인접한 2 차원 배열 집합에서 numpy 배열 객체를 만들 수 있습니까?인접하지 않은 연속 된 2 차원 슬라이스 집합에서 3d numpy 배열 생성
2
A
답변
1
게시물에 약간의 불일치가 있습니다. 나는 당신의 제목이 당신이 원하는 것을 설명한다고 가정합니다. 파이썬 API 문서를 살펴보면, PyArray_NewFromDescr
은 사전 할당 된 메모리에 대한 포인터 하나만 허용하므로 거의 확실한 대답은 아닙니다. 은이를 달성하기 위해 영리한 방법으로 strides
인수를 사용할 수 있습니다. 그러나 그렇더라도 비 인접 메모리는 규칙적인 방식으로 배치되어야합니다.
numpy가 사용자가 원하는 바가 아니며, PyArray_CheckStrides
으로 판단하면 인접한 메모리 블록이 하나만있는 것으로 간주됩니다.
1
짧은 대답, 아니오.
Numpy는 모든 데이터가 단순한 스트라이드 패턴으로 놓이기를 기대합니다. 배열을 반복 할 때 차원에서 전진하기 위해 메모리의 위치에 해당 차원의 보폭 크기 인 상수를 추가합니다. 따라서 2 차원 슬라이스가 규칙적으로 배치되지 않으면 (예 : 큰 3 차원 배열의 다른 모든 행) numpy는 데이터를 복사해야합니다.
주문하신 경우 원하는 것을 할 수 있습니다. 데이터가 첫 번째 항목을 가리키고 스트라이드가 레이아웃에 적합하며 descr이 올바른 경우 PyArray 구조체를 만들어야합니다. 가장 중요한 것은이 뷰가 존재하는 동안 메모리의 큰 부분을 유지하기 위해 기본 멤버를 다른 파이썬 개체로 설정하려고하는 것입니다.
관련 문제
- 1. NumPy 배열 슬라이스 없음
- 2. C#의 2 차원 배열 슬라이스
- 3. LINQ를 통해 2 차원 배열 생성
- 4. 어떻게 2 차원 배열을 2 차원 배열
- 5. 삭제시 액세스 위반 메시지 동적으로 생성 된 2 차원 배열
- 6. iPhone - 인접하지 않은 두 컨트롤러간에 배열 전달
- 7. 2 차원 배열 축소
- 8. 2 차원 배열
- 9. 2 차원 배열
- 10. 2 차원 배열 지우기
- 11. 가공 2 차원 배열
- 12. 2 차원 배열 정렬
- 13. 정렬 2 차원 배열 ++
- 14. 연속 메모리 블록에서 동적으로 2 차원 배열 만들기
- 15. 2D numpy 배열 목록을 하나의 3D numpy 배열로 변환 하시겠습니까?
- 16. C++ : 2 차원 배열 : 1 차원 고정?
- 17. F # 2 차원 배열 만들기
- 18. 2 차원 배열 값 주파수
- 19. 자바 스크립트 2 차원 배열
- 20. 마스크 된 배열 numpy 오류
- 21. PHP에서 2 차원 배열 병합
- 22. PHP에서 2 차원 배열 정렬
- 23. C++ 2 차원 배열 질문
- 24. 3D 행렬에서 2 차원 행렬 얻기 Matlab
- 25. 프롤로그에 빠른 2 차원 배열
- 26. 2 차원 동적 배열 정의
- 27. 동적 크기 2 차원 배열
- 28. 포인터가있는 C++ 2 차원 배열
- 29. PHP 2 차원 배열 문제
- 30. 2 차원 배열 추가 문제