대부분의 APL 기호와 마찬가지로 ⍉
하나의 인수 (전치)와 두 개의 인수 (이항 전치 / 재주문 차원)로 호출 할 때 다른 의미를 갖습니다. 이 과제는 후자에 관한 것으로, numpy.moveaxis
파이썬이나 permute
MATLAB 에서 와 비슷하게 작동 하지만 더 강력합니다.
order ⍉ A
order
별개의 항목이 있을 때
의 모든 구성원 order
이 고유 order ⍉ A
하면 다음과 같습니다.
numpy.moveaxis(A, tuple(range(len(A.shape)), order)
파이썬에서, 또는permute(A,order)
MATLAB에서. 후자의 문서 에서 인용 :
B = permute (A, order)는 A의 차원을 벡터 순서로 지정된 순서대로 재정렬합니다. 결과 배열 B의 값은 A와 같지만 특정 요소에 액세스하는 데 필요한 아래 첨자의 순서는 순서대로 지정됩니다.
예를 들어 A
3D 배열 이라고 가정 하고 let B ← (2 0 1)⍉A
. 그런 다음 B는 B[x0,x1,x2] = A[x2,x0,x1]
모두 를 위해x2,x0,x1
order ⍉ A
order
항목을 반복 했을 때
order
입력이 반복 되면 배열의 대각선 슬라이스를 가져옵니다. 예를 들어 A를 2x3x4 배열로 지정하십시오. B ← (0 0 1)⍉A
대각선 슬라이스를 따라 A
만들어 B
냅니다 B[x0,x1] = A[x0,x0,x1]
. 참고 B
가 3 × 4 인 경우에, 우리가 설정해야 할 것 : 2 × 4의 배열 B[2, x1] = A[2, 2, x1]
의 범위를 벗어 될 것이다 A
. 일반적으로의 k
차원은 그와 같은 B
것의 최소치입니다 .A.shape[i]
order[i] = k
예
이항 트랜스을 고려 order⍉A
경우 order = [2, 1, 0]
A는 3x4x5이고
A =
[[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
[[20 21 22 23 24]
[25 26 27 28 29]
[30 31 32 33 34]
[35 36 37 38 39]]
[[40 41 42 43 44]
[45 46 47 48 49]
[50 51 52 53 54]
[55 56 57 58 59]]]
결과는 5x4x3 배열 B =
[[[ 0 20 40]
[ 5 25 45]
[10 30 50]
[15 35 55]]
[[ 1 21 41]
[ 6 26 46]
[11 31 51]
[16 36 56]]
[[ 2 22 42]
[ 7 27 47]
[12 32 52]
[17 37 57]]
[[ 3 23 43]
[ 8 28 48]
[13 33 53]
[18 38 58]]
[[ 4 24 44]
[ 9 29 49]
[14 34 54]
[19 39 59]]]
예를 들어 (x0, x1, x2) = (4,1,2) 일 때 우리는 B[x0,x1,x2] = A[x2, x1, x0] = A[2,1,4] = 49
.
아닌 경우 order = [0, 0, 0]
및 A
상기와 같이, 우리는 출력했을 B
1 차원 크기 -3- 배열 될 B = [0, 26, 52]
그래서B[1] = B[x0] = A[x0,x0,x0] = A[1,1,1] = 26
입력
여기서는 0 인덱싱을 사용하지만 APL 기본값과 마찬가지로 1 인덱싱을 사용할 수도 있습니다.
A
차원 n ≥ 1 인 다차원 또는 중첩 배열 .리스트
order
의 n은 정수로 이루어진 양의 정수 {0,1, ..., K} (또는 {1, ..., K + 1} 1 인덱스) 일부 K < N 가능한 임의의 순서로, 반복해서.
산출
- 이 인수를 사용하여 2 차원 조옮김을 적용한 결과를 나타내는 다차원 또는 중첩 배열입니다. (출력의 크기는 k + 1 입니다.)
메타에 대한 현재 표준에서 허용하는대로 전체 프로그램, 기능 등을 작성할 수 있습니다.
귀하의 언어에 기본 제공 언어가있는 경우 흥미로운 답변을 위해 기본 제공없이 솔루션을 작성하는 것이 좋습니다.
테스트 사례
곧 파이썬 구현을 참조하십시오.
테스트 사례를 읽기위한 참고 사항 : APL에서 배열의 끝과 끝 축은 순서대로 열과 행을 따릅니다.
⍉
역축 인덱스를 기본값으로 사용하는 것이 포함 되므로 3 차원 배열 인 경우 ⍉A
와 동일하며 일반적으로 입니다 . (2 1 0)⍉A
A
⍉A
(⌽⍳≢⍴A)⍉A
[number-of-dimensions,first-dimension-length,second-dimension-length,…,last-dimension-length,first-element,second-element,…,last-element]
.
⍉
: P