numpy.array에 포함 된 데이터가 있습니다 (더 큰 프로젝트에서). 사용자 입력을 기반으로 선택한 축 (dimAxisNr)을 배열의 첫 번째 차원으로 이동하고 사용자 입력 (예 : Select2 및 Select0)과 같은 하나 이상의 (첫 번째 포함하여) 차원을 슬라이싱해야합니다.사용자 정의 입력을 사용하여 numpy 슬라이싱
이 입력을 사용하여 슬라이스하는 데 필요한 정보가 들어있는 DataSelect를 생성합니다. 그러나 슬라이스 배열의 출력 크기는 인라인 인덱싱을 사용하는 출력 크기와 다릅니다. 그래서 기본적으로 입력리스트에서 '37 : 40 : 2 '와'0 : 2 '를 생성 할 방법이 필요합니다. 나는 모든 질문을 이해했는지 모르겠어요
import numpy as np
dimAxisNr = 1
Select2 = [37,39]
Select0 = [0,1]
plotData = np.random.random((102,72,145,2))
DataSetSize = np.shape(plotData)
DataSelect = [slice(0,item) for item in DataSetSize]
DataSelect[2] = np.array(Select2)
DataSelect[0] = np.array(Select0)
def shift(seq, n):
n = n % len(seq)
return seq[n:] + seq[:n]
#Sort and Slice the data
print(np.shape(plotData))
print(DataSelect)
plotData = np.transpose(plotData, np.roll(range(plotData.ndim),-dimAxisNr))
DataSelect = shift(DataSelect,dimAxisNr)
print(DataSelect)
print(np.shape(plotData))
plotData = plotData[DataSelect]
print(np.shape(plotData))
plotDataDirect = plotData[slice(0, 72, None), 37:40:2, slice(0, 2, None), 0:2]
print(np.shape(plotDataDirect))