내가 꽤 큰 NumPy와 배열을 가지고 ...NumPy와 다차원 색인 및 대각선 대칭
power = ...
print power.shape
>>> (3, 10, 10, 19, 75, 10, 10)
다음과 같은 2 차원 행렬 즉 10 × 부품, I이 인자 4 게인을 이용할 수 m
, I, J, K, L의 모든 값
power[i, :, :, j, k, l, m]
power[i, j, k, l, m, :, :]
대칭? 예 : 매트릭스가 (savez_compressed 50 메가 바이트) 파일로 저장할 때
내 시도 :
size = 10
row_idx, col_idx = np.tril_indices(size)
zip_idx = zip(row_idx, col_idx)
print len(zip_idx), zip_idx[:5]
>>> 55 [(0, 0), (1, 0), (1, 1), (2, 0), (2, 1)]
all_idx = [(r0, c0, r1, c1) for (r0, c0) in zip_idx for (r1, c1) in zip_idx]
print len(all_idx), all_idx[:5]
>>> 3025 [(0, 0, 0, 0), (0, 0, 1, 0), (0, 0, 1, 1), (0, 0, 2, 0), (0, 0, 2, 1)]
a, b, c, d = zip(*all_idx)
tril_part = np.transpose(s.power, (0, 3, 4, 1, 2, 5, 6))[:,:,:, a, b, c, d]
print tril_part.shape
>>> (3, 19, 75, 3025)
이 추한 것,하지만 "작품"... 나는 또한 tril_part에서 다시 힘을 얻을 수 있습니다 일단 ... tril_part 전원에서가는
- 더 나은 방법 : 나는이 두 qurestions를 얻을 것 같아요?
- tril_part에서 전원으로 이동하는 방법은 무엇입니까?
편집 : "size"주석은 분명히 유효하지만 무시하십시오 :-) 질문의 색인 부분은 혼자입니다. 나는 더 작은 행렬에 대해 비슷한 색인을 만들고 싶었다.
모든 상단 삼각형을 설정 다시 비교하기 위해 에
가비교, 당신은 확실히 35메가바이트 절약 정말 가치가 있습니까? – Daniel
@Ophion : 실제로는 "있습니다". 3 * 10 * 10 * 19 시뮬레이션 결과로 75 개의 10x10 행렬이 생성됩니다. 나는 이것을 이렇게 저장하는 것이 편리하고 자연 스럽다는 것을 안다. 그리고 "조각 내기"를 위해 접근 자 함수를 사용한다. –
'파워'의 dtype은 무엇입니까? – gg349