2012-10-15 4 views
3

임의의 치수 (n)의 배열을 만듭니다.numpy 배열 임의의 치수로 자름

#assign the dimension 

>>> n=22 

#create the numpy array 

>>> TheArray=zeros([2]*n) 

>>> shape(TheArray) 

(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2) 

배열의 값을 채우는 코드가 있습니다 (이 예제에서는 건너 뛰었습니다).

자, n으로 일반화 된 구문의 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 부분을 만들려면 배열

>>> TheArray[0:2,0:2,0:2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] 

array([[[ 0., 0.], 
     [ 0., 0.]], 

     [[ 0., 0.], 
     [ 0., 0.]]]) 

의 일부 값에 액세스하려고?

답변

2

한 가지 방법은 numpy.s_ 사용하는 것입니다 : 솔직히 말해서 ..

In [55]: m = arange(2**6).reshape([2]*6) 

In [56]: m.shape 
Out[56]: (2, 2, 2, 2, 2, 2) 

In [57]: m[:2,:2,:2,0,0,0] 
Out[57]: 
array([[[ 0, 8], 
     [16, 24]], 

     [[32, 40], 
     [48, 56]]]) 

In [58]: m[s_[:2, :2, :2] + (0,)*(n-3)] 
Out[58]: 
array([[[ 0, 8], 
     [16, 24]], 

     [[32, 40], 
     [48, 56]]]) 

을 그리고 난 당신이 하드를 제거 할 수 -3 생각

In [69]: m[(s_[:2, :2, :2] + (0,)*m.ndim)[:m.ndim]] 
Out[69]: 
array([[[ 0, 8], 
     [16, 24]], 

     [[32, 40], 
     [48, 56]]]) 

하지만, 난 그냥 아마 좋겠 필요한 경우이 함수를 함수로 묶습니다.

+0

감사합니다. 파이썬과 numpy 문서는이 결론을 이끌어 낼 정도는 아니지만, 예제를 제공 한 후에 파이썬과 numpy 문서를 모아서 이해할 수있었습니다. – user1748155