4
공통 인덱스가있는 여러 크기의 배열이 있습니다. 예를 들어 Python, Numpy, 배열을 다차원으로 함께 추가하는 방법 (브로드 캐스팅)
,Arr1 = np.arange(0, 1000, 1).reshape(100, 10)
Arr2 = np.arange(0, 500, 1).reshape(100,5)
Arr1.shape = (100, 10)
Arr2.shape = (100, 5)
나는 차원 셋 인 새로운 배열, Arr3에 함께 다음을 추가합니다. 예 :
Arr3 = Arr1 + Arr2
Arr3.shape = (100, 10, 5)
참고로,이 경우 값은 예를 들어.
Arr3[10, 3, 2] = Arr1[10, 3] + Arr2[10, 2]
나는
test = Arr1.copy()
test = test[:, np.newaxis] + Arr2
지금, 나는 두 개의 정사각형 행렬을 추가 할 때이 작업을 할 수있었습니다 다음과 같은 방법을 사용하려고 시도하고있다.
m = np.arange(0, 100, 1)
[x, y] = np.meshgrid(x, y)
x.shape = (100, 100)
test44 = x.copy()
test44 = test44[:, np.newaxis] + x
test44.shape = (100, 100, 100)
test44[4, 3, 2] = 4
x[4, 2] = 2
x[3, 2] = 2
그러나 실제 프로그램에서는이 문제에 대해 정사각형 행렬을 사용하지 않습니다. 또한이 방법은 다음과 같이 차원 수를 위로 이동하기 시작할 때 입증되는 것처럼 매우 메모리 집약적입니다. 축 "공유"
- 은 일반적인 두 개의 다른 모양의 2 차원 배열에서 3 차원 배열을 만들 수 있습니다 :
test44 = test44[:, :, np.newaxis] + x test44.shape = (100, 100, 100, 100) # Note this next command will fail with a memory error on my computer. test44 = test44[:, :, :, np.newaxis] + x
그래서 제 질문은 두 부분으로 구성됩니다.
- 이러한 방법은 고차원 차원에서 확장 할 수 있습니까?
모든 도움을 주시면 대단히 감사하겠습니다.
그래서 4 차원 방송을하고 싶다면 Arr4 = Arr1 + Arr2 + Arr3라고 말하면 먼저 모든 것을 4 차원으로 재구성해야할까요? –
차원 수 이상뿐 아니라 최종 결과의 모양을 결정하고 입력 배열을 변형하여 최종 모양으로 브로드 캐스팅 할 수 있어야합니다. 예를 들어, 최종 모양이 (2, 3, 4, 100)이어야한다면 다음을 시도해보십시오 :'Arr1.shape = (2, 1, 1, 100); Arr1.shape = (1, 3, 1, 100); Arr1.shape = (1, 1, 4, 100)'. 이 경우 기술적으로 선두의 1을 생략 할 수 있지만이를 명시 적으로 포함하고 싶습니다. –
좋은 덕분에. 나는 성공적으로 방송 할 수 있었지만, 이제 더 높은 차원으로 옮기기 시작할 때 메모리 문제에 부딪혀 덜 "무차별 적"방법을 개발할 필요가 있다고 생각합니다. 그래도 도움을 주셔서 감사합니다. –