내가 아는 한 슬라이스 정보는 어디에도 저장되어 있지 않지만 뷰와 기반의 속성에서 추론 할 수 있습니다. 예를 들어
는 :
In [156]: x=np.arange(10)
In [157]: y=x[3:]
In [159]: y.base
Out[159]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [160]: y.data
Out[160]: <memory at 0xb1a16b8c>
In [161]: y.base.data
Out[161]: <memory at 0xb1a16bf4>
나는 __array_interface__
값이 더 좋아 :
In [162]: y.__array_interface__['data']
Out[162]: (163056924, False)
In [163]: y.base.__array_interface__['data']
Out[163]: (163056912, False)
그래서 y
x
이상 12 바이트를 시작하는 DataBuffer. y.itemsize
은 4이므로 슬라이스 시작은 3
입니다.
In [164]: y.shape
Out[164]: (7,)
In [165]: x.shape
Out[165]: (10,)
는 그리고 모양을 비교, 나는 슬라이스 정지 None
(끝)임을 추론.
2 차원 어레이 또는 계단식 슬라이스의 경우 strides
도 살펴 봐야합니다.
실제로는 결과에서 추론하는 것이 아니라 슬라이싱 객체 (튜플, 슬라이스 등)를 함수에 전달하는 것이 더 쉽고 안전합니다.
In [173]: S=np.s_[1:-1]
In [174]: S
Out[174]: slice(1, -1, None)
In [175]: x[S]
Out[175]: array([1, 2, 3, 4, 5, 6, 7, 8])
즉, 추론하기보다는 S
을 전달하십시오. 나는 전에 그것을 한 번도 본 적이 없다.
나는 S를 지나쳐 목적을 달성 할 수 있다고 생각하지만, 당신은 1d에서 다소 직관적 인 5 행 솔루션을 위해 필요한 것을 제공했다. 이 조각의 사용이 실제로 numpy에서 예기되지 않은 경우에 나에게 이상하게 보입니다. –