2011-11-06 4 views
1

numpy의 배열 생성자에 문제가 있습니다.Numpy : 튜플의 2 차원 배열을 만들 수 없습니다.

>>> A = array([[0, 0], [3, 5]]) 
>>> print(A) 
[[0 0] 
[3 5]] 
>>> A[1, 1] = 7 
>>> print(A) 
[[0 0] 
[3 7]] 
>>> A = array([[(0, 0), (0, 1)], [(1, 0), None]], dtype=object) 
>>> A[1, 1] = (2, 3) 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
IndexError: invalid index 
>>> A.shape 
(2,) 

은 정말 "손으로"이 매트릭스를 작성해야합니다 : 나는 튜플과 2 차원 배열을 초기화 할, 그러나 그것은 정수와 마찬가지로 작동하지 않습니다. 어떤 생각?

답변

3

코드가 나를 위해 효과가있는 것 같습니다 (명시적인 numpy 네임 스페이스 사용). numpy v1.6.1을 사용하고 있습니다.

In [8]: import numpy as np 
In [9]: A = np.array([[(0, 0), (0, 1)], [(1, 0), None]], dtype=object) 

In [10]: A[1, 1] = (2, 3) 

In [11]: A.shape 
Out[11]: (2, 2) 

In [12]: A 
Out[12]: 
array([[(0, 0), (0, 1)], 
     [(1, 0), (2, 3)]], dtype=object) 

어떤 numpy 버전을 사용하고 있습니까?

업데이트이 내가 NumPy와 v1.5.1 (기본 파이썬 OSX 라이온 설치와 함께 패키지로 제공 버전)를 사용하여 영업 이익의 오류를 재현 할 수 있기 때문에 NumPy와 버전에 관련된 문제가 될 것으로 보인다. 이것이 수정 된 numpy의 버그인지 또는 구현의 변경인지 확실하지 않습니다.

>>> A = np.array([[(0, 0), (0, 1)], [(1, 0), None]], dtype=object) 
>>> A[1][1] = (2,3) 
>>> A 
array([[(0, 0), (0, 1)], [(1, 0), (2, 3)]], dtype=object) 

업데이트 # 여기에 희망이 적응할 수있는 일반적인 수정의 2 :

>>> C = np.empty((2,2),object) 
>>> B = [[(0, 0), (0, 1)], [(1, 0), None]] 
>>> C[:] = B 
>>> C 
array([[(0, 0), (0, 1)], 
     [(1, 0), None]], dtype=object) 
>>> C.shape 
(2, 2) 
>>> C[1,1] = (2,3) 
>>> C 
array([[(0, 0), (0, 1)], 
     [(1, 0), (2, 3)]], dtype=object) 
+0

작품을 내게 너무가 사용 나는 NumPy와의 최신 버전으로 업데이트 중 하나가 또는이 간단한 해결 방법을 사용합니다 Windows에서 NumPy 1.6.1. – joshayers

+0

1.5.1 – Tangui

+0

@Tangui - numpy v1.5.1에서 오류를 재현 할 수 있습니다. 내 답변에 대한 업데이트를 참조하십시오. – JoshAdel

관련 문제