Numpy Python에서 4 차원 배열의 아래쪽 삼각형을 위쪽 삼각형으로 복사하는 방법은 무엇입니까?
Nov 28 2020
목표는 아래쪽 삼각형을 위쪽 삼각형으로 복사하는 것입니다. OP 에서 생성 된 제안을 기반으로 다음 코드가 작성되었습니다.
import numpy as np
lw_up_pair = np.tril_indices(4, -1)
arr=np.zeros((4,4,1,1))
arr[1,:1,:,0]=1
arr[2,:2,0,0]=2
arr[3,:3,0,0]=3
arr = arr + arr.T - np.diag(np.diag(arr))
그러나 오류가 발생했습니다.
ValueError : 입력은 1- 또는 2-d 여야합니다.
이 문제를 어떻게 처리하는지 알 수 있습니까?
예상되는 출력은 다음과 같습니다.
[[[0.]],, [[1.]],, [[2.]],, [[3.]]]
[[[1.]],, [[0.]],, [[2.]],, [[3.]]]
[[[2.]],, [[2.]],, [[0.]],, [[3.]]]
[[[3.]],, [[3.]],, [[3.]],, [[0.]]]
답변
1 fountainhead Nov 28 2020 at 16:32
삼각형 복사를 수행하기 전에 "squeeze"를 적용하여 마지막 두 축 (길이가 각각 1 개임)을 짜내십시오.
그러면 2 차원 배열이 남습니다.
그런 다음 삼각형 복사를 수행 한 후 압착 한 축을 다시 도입합니다.
arr = np.squeeze(arr)
arr = arr + arr.T - np.diag(np.diag(arr))
arr = arr[...,None, None]