큰 행렬 (배열) 구조 (3 축)를 만들고 각 요소는 Python 객체 (myclass 인스턴스)에 대한 참조를 저장해야합니다. 그러한 배열을 만들기 위해 numpy를 사용할 수 있습니까? 파이썬 참조를 저장하기 위해 사용해야하는 데이터 유형은 무엇입니까? numpy의 장점은 여러 수준에서 슬라이스를 지원한다는 것입니다. 대안으로 중첩 된 (중첩 된) 목록을 만드는 것이지만 그것은 번거로운 솔루션입니다.NumPy 및 객체 참조가있는 Python 3
3
A
답변
2
dtype=object
을 사용하여 Python 개체를 배열에 저장하십시오.
import numpy as np
class Foo: pass
arr=np.empty(2,dtype=object)
arr[:]=[Foo(),Foo()]
print(arr)
# [<__main__.Foo instance at 0xb7827d0c>
# <__main__.Foo instance at 0xb748b5ac>]
print(arr.dtype)
# object
1
object
을 dtype으로 지정하면 원하는 것을 저장할 수 있습니다. 당신이 myclass
대신 object
사용할 수 있도록
import numpy
print numpy.array([['a', (2, 2)], [1, 2+3j], [open, xrange(7)]], dtype=object)
어떤 알 수없는 유형은 이런 식으로 작동합니다. object
은 numpy 최적화없이 임의의 객체를 저장한다는 것을 분명히합니다. 자세한 내용은 the docs을 참조하십시오.
1
당신은 특별한 아무것도 할 필요가 없습니다 :이 상자 밖으로 작동합니다
>>> import numpy
>>> class TheClass(object):
... pass
...
>>> numpy.array([TheClass(), TheClass()])
array([<__main__.TheClass object at 0x10d435a50>,
<__main__.TheClass object at 0x10d435a90>], dtype=object)
NumPy와가 자동으로 감지 배열 객체 등 표준 스칼라 유형 (플로트, INT, 하나의 아니라는 것을 .) 자동으로 dtype
을 object
으로 설정하여 처리합니다.
관련 문제
- 1. Python, Numpy 및 OLS
- 2. Python Numpy nan_to_num help
- 3. Python/Numpy : 배열 나누기
- 4. Python Numpy Array에서 0 삭제하기
- 5. Numpy and Python
- 6. Python/Numpy MemoryError
- 7. Numpy + Python 15x는 MATLAB보다 느립니다.
- 8. Python - NumPy - 배열 요소로 튜플
- 9. NumPy for Windows python 2.7
- 10. python/numpy : numpy가있는 문제 linal.eig
- 11. 파이썬, numpy : 3 차원 방송
- 12. 0이 아닌 함수 도움말, Python Numpy
- 13. 개체 및 참조가있는 Java 배열
- 14. Python, Numpy - 조건에 따라 배열을 분할하려고 시도했습니다.
- 15. Python Numpy 2 차원 배열 반복
- 16. Python - Virtualenv, python 3?
- 17. python numpy 최적화 n 차원 투영
- 18. python pickle 파일에서 numpy strides 유지
- 19. matplotlib, numpy 및 pylab가있는 py2exe
- 20. Python, OpenCV 및 numpy 배열을 사용하여 그레이 스케일 비디오 만들기
- 21. Python C-API 및 Numpy : import_array의 코어 덤프
- 22. numpy 1.6.1 및 python 2.7 with ropemacs 충돌 코드 완료
- 23. 순환 참조가있는 객체의 in_array
- 24. Numpy C API : 여러 객체 파일을 연결하십시오.
- 25. Numpy/Python : 메쉬 그리드 나누기 연산 : MemoryError
- 26. Python 목록에서 객체 저장 및 검색
- 27. Amazon Elastic MapReduce의 Numpy 및 Scipy
- 28. Android : attrs.xml의 객체 참조가있는 사용자 정의보기, 항상 null
- 29. WingIDE - Python 2와 Python 3
- 30. python. 객체 크기 얻기
호기심이 있다면 NumPy가 dtype'object'의 배열에있는 객체에 포인터를 저장한다는 것을 검사 할 수 있습니다 :'x = object(); a = np.array ([x, x]); print (id (x), id (x)) == struct.unpack ('2L', ctypes.string_at (a.ctypes.data, 8))'(32 비트 파이썬). – eryksun
@eryksun :'ctypes.string_at (a.ctypes.data, 8)'을 더 간단하고보다 일반적인'a.tostring()'으로 간단하게 대체 할 수 있습니다. – EOL
@eryksun : + 귀하의 의견을 : 'ctypes.string_at()'실제로 흥미로운 기능입니다. :) – EOL