대각선으로 블록 행렬과 대각 행렬을 만들려면 어떻게해야합니까, 이것은 9x9의 행렬이다, 그러나 나는 주어진 값의 nxn 행렬을 만들려면 N.의파이썬 : 나는 그림에 표시된 형태의 매트릭스를 작성해야
그것은 제 1과 -1의 오프셋 대각선 대각선에 의해 제 2 반복을 따라 반복되는 최초 두 개의 블록 행렬을 정의하여이를 생성 할 수 있는가? 이 최종 행렬의 그림을 보여줍니다
내가이 필요합니다대각선으로 블록 행렬과 대각 행렬을 만들려면 어떻게해야합니까, 이것은 9x9의 행렬이다, 그러나 나는 주어진 값의 nxn 행렬을 만들려면 N.의파이썬 : 나는 그림에 표시된 형태의 매트릭스를 작성해야
그것은 제 1과 -1의 오프셋 대각선 대각선에 의해 제 2 반복을 따라 반복되는 최초 두 개의 블록 행렬을 정의하여이를 생성 할 수 있는가? 이 최종 행렬의 그림을 보여줍니다
내가이 필요합니다내가 생각했기 때문에 당신이 스스로를 시도하지 않았다하더라도, 당신이 원하는 것을하는 function
을 만든 그것은이었다 시원한 문제. function
는 diagonals
함께 3x3
블록을 할당 할 broadcasting
를 사용합니다.
def matrix(n):
a = np.zeros((n,n), np.int8)
for d in range(0, int(n/3)+4, 3):
a[d:d+3, d:d+3] = np.array([[-4, 1, 0], [1, -4, 1], [0, 1, -4]])
for d in range(0, int(n/3)+3, 3):
a[d:d+3, d+3:d+6] = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
a[d+3:d+6, d:d+3] = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
return a
및 테스트 :
>>> matrix(9)
array([[-4, 1, 0, 1, 0, 0, 0, 0, 0],
[ 1, -4, 1, 0, 1, 0, 0, 0, 0],
[ 0, 1, -4, 0, 0, 1, 0, 0, 0],
[ 1, 0, 0, -4, 1, 0, 1, 0, 0],
[ 0, 1, 0, 1, -4, 1, 0, 1, 0],
[ 0, 0, 1, 0, 1, -4, 0, 0, 1],
[ 0, 0, 0, 1, 0, 0, -4, 1, 0],
[ 0, 0, 0, 0, 1, 0, 1, -4, 1],
[ 0, 0, 0, 0, 0, 1, 0, 1, -4]], dtype=int8)
그리고 그냥 내가 matplotlib
과 결과를 꾸몄다하고있어, 작동 표시하기 :
프로그램을 설명해 주시겠습니까? –
scipy에서 스파 스 매트릭스 함수 중 하나를 사용하여이 작업을 수행 할 수 있습니까? 이 문제를 해결할 수 있습니까? –
@AzlaanMustafaSamad 대각선을 반복하면서 패턴을'matrix'의'3x3' 세그먼트에 적용합니다. 코드를 따라 가면 무슨 일이 일어나는지 볼 수 있어야합니다. 필자는'드문 드문''매트릭스''함수'에 익숙하지 않아 도움이되지 않을 것입니다. 어쨌든이 특별한 요구 사항으로 새로운 질문을해야합니다. 이 문제에 관해서는 내 대답 ('grey' ->'green' tick)을'받아 들여서 문제가 해결되었음을 보여주세요. 고맙습니다! –
그래서 좋은 아니다 제로의 노력으로 요구 사항을 버리고 누군가가 당신을 위해 일하기를 기대하십시오. –
예, 가능합니다. 나는 당신의 질문에 답했다고 가정합니다. – timgeb
희소 행렬을 만드는 원래의 방법은'coo' 스타일의 입력을 사용합니다. 또한 여러 가지 대각선 스타일과 블록 행렬이 있습니다. – hpaulj