의 동적 임의의 부분 집합을 만듭니다파이썬 & NumPy와 -이 작업을 수행하는 일반적인 방법을 찾고 있어요
raw_data = np.array(somedata)
filterColumn1 = raw_data[:,1]
filterColumn2 = raw_data[:,3]
cartesian_product = itertools.product(np.unique(filterColumn1), np.unique(filterColumn2))
for val1, val2 in cartesian_product:
fixed_mask = (filterColumn1 == val1) & (filterColumn2 == val2)
subset = raw_data[fixed_mask]
내가 filterColumns의 금액을 사용할 수 있어야합니다. 그래서 내가 원하는 것은 이것입니다 :
filterColumns = [filterColumn1, filterColumn2, ...]
uniqueValues = map(np.unique, filterColumns)
cartesian_product = itertools.product(*uniqueValues)
for combination in cartesian_product:
variable_mask = ????
subset = raw_data[variable_mask]
내가 원하는 것을하기위한 간단한 문법이 있습니까? 그렇지 않으면 다른 접근 방식을 시도해야합니까?
편집 :이 같은
cartesian_product = itertools.product(*uniqueValues)
for combination in cartesian_product:
variable_mask = True
for idx, fc in enumerate(filterColumns):
variable_mask &= (fc == combination[idx])
subset = raw_data[variable_mask]
나는 당신의 답을 받아들이고 싶지만 모두가 그들의 머리 속에 n 차원 행렬을 회전시킬 수있는 것은 아닙니다. ;) 즉, 내 문제에 대해이 솔루션을 구현하는 방법을 잘 모르겠습니다. 나는 argsort와 rollaxis 문서를 조금 파 냈다. 그러나 부분 집합을 얻기 위해 그것들을 적용하는 방법은 나를 넘어있다. 다행히도 내 데이터가 너무 커서 루프가 잘 돌아 가지 않기 때문에 가능한 경우 루프를 피하는 것이 좋습니다. –
업데이트를 참조하십시오. 실제로 축 정렬의 인덱스 배열을 제공하는 argsot이 아니라 축에 대한 여러 개의 단일 요소와 축의 여러 요소에 대해 생각하고있는 lexsort입니다. D – chiffa
자세한 업데이트를 주셔서 대단히 감사합니다! 나는 당신의 논리를 지금 따르고 numpy에서의 데이터 조작에 대해 생각하는 더 좋은 방법을 배웠다. autocorrelation 및 breakpoints를 상당히 표준화하는 데 사용하는 방법입니까? 초보자가 코멘트없이 코드에서 수행중인 작업을 이해하는 것이 어려울 것으로 보입니다. –