2014-10-10 2 views
3

1 차원 배열에서 0 차원 하위 ​​배열을 슬라이스 할 수 있습니까? I는 A가 N 차원 ndarrayarrarr[0] A (N-1) 차원 ndarray 반환이 경우, 예를 들어numpy에서 1 차원 배열에서 0 차원 슬라이스를 추출하는 방법

.

나는이 x ndarray 1 차원, x[0]는 0 차원 ndarray을 반환하지 않는 경우 그러나

, 오히려 numpy.int64 (xint64의 포함 된 경우).

최소 예 :

def increment(zero_d_array): 
    zero_d_array[...] = zero_d_array + 1 

counter = numpy.array(0) # a zero-dimensional array containing scalar 0 
increment(counter)  # success; counter is now 1 

counters = numpy.zeros(3, dtype=int) # [0, 0, 0] 
increment(counter[1]) # fails; counter[1] is a numpy.int64, not a 0-D array 

나는 위의 increment(counter[1:2])와 함께 작동,하지만 increment() 모두 0-D 및 1-D 입력 작업을하는 일 때문 실현. 모든 기능이 매우 유연하지는 않습니다.

+0

가 나는 방법이 확실하지 않다. 0-d 배열은 Numpy에서 약간 이상합니다. 실제로이 작업을 수행해야하는 이유가 있습니까? – BrenBarn

+0

나는 제로 -d 배열이 "박스형"프리미티브를 갖는 유용한 방법이 될 수 있다고 생각한다. int처럼 함수에 전달할 수있다. 즉, int 형으로 처리 할 수 ​​없다. 이 질문에서 언급했듯이, 분명히 size-1 1-D 슬라이스를 사용하는 것과 같은 해결 방법이 있지만이 방법은 더 장황합니다. – SuperElectric

+0

그래,하지만 문제는 슬라이싱으로 얻을 수 있어야한다는 것입니까? 주변에 제로 카운터를 유지하려는 경우 명시 적으로 생성하여 표시 할 수 있습니다. 제가 말하고자하는 것은 실제로 당신이하는 일은 단순히 카운터를 만들고 증분하는 대신 모든 차원의 배열을 일반적으로 슬라이스하고 증가시키려는 것입니다. – BrenBarn

답변

6

사용 줄임표 :

increment(counter[1, ...]) 
관련 문제