2017-12-10 10 views
-1

, I는 행렬있다 : I 삽입 할행렬을 행렬에 삽입 (값 변경)하는 방법은 무엇입니까? 파이썬 (NumPy와) 예

[ [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] ] 

을 [-1 -1 -1], [0 5 0]와 같은 일부 위치에서 :

[ [1 2 3 4 5], 

    [6 7 8 9 10], 

    [11 -1 -1 -1 15], 

    [16 0 5 0 20], 

    [21 22 23 24 25] ] 
+1

삽입하지 않으면 기존 값이 변경됩니다. 너 뭐 해봤 니? – roganjosh

+1

"어떤 위치"를 어떻게 정의할지는 확실하지 않습니다. [색인 생성/조각화] (https://docs.scipy.org/doc/numpy-1.13.0/user/basics.indexing.html#)를 읽으면 도움이됩니다. – Divakar

+0

이미지의 픽셀 (프레임 t-1)이있는 행렬이 있습니다. 다음 프레임에서 오프셋 (움직임)에 해당하는 블록을 발견했습니다. 이제 프레임을 복원하기 위해 픽셀을이 블록의 값으로 대체하려고합니다. 나는 시도했다 : k = -1 l = -범위 내 (to_x, to_x + 4) : k = k + 1 범위가 j 인 경우 (to_y, to_y + 4) : l = l + 1 t_rec [i] [j] = im_block [l] [k] – Defex

답변

0

에 대한 인덱스 경계를 ​​확인해야합니다, 당신이 tryi 말할 것이다 으로 바꾸려면 어레이 대신 또는 을 수정하십시오. 기존 어레이의 일부로 변경하십시오.

당신은 당신이 덮어 와 조각 같은 크기 의 새로운 행렬에 해당 슬라이스의 값을 할당 할 배열의 부분의 뷰를 얻을 수 basic slicing를 사용할 수 있습니다. 예 : 일반적

>>> x=np.matrix([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]) 
>>> x 
matrix([[ 1, 2, 3, 4], 
     [ 5, 6, 7, 8], 
     [ 9, 10, 11, 12], 
     [13, 14, 15, 16]]) 
>>> x[1:3,1:4]=np.matrix([[-1,-2,-3],[-4,-5,-6]]) 
>>> x 
matrix([[ 1, 2, 3, 4], 
     [ 5, -1, -2, -3], 
     [ 9, -4, -5, -6], 
     [13, 14, 15, 16]]) 

는 행 r 원래 매트릭스 인덱스 x[r:r+m,c:c+n]로 슬라이스의 열 c에서 상부 좌측 모서리 mn 행과 열의 행렬을 설명한다.

0

이 방법은 매트릭스 m을, 어레이 N r 행부터 열 C

가진 요소를 대체 여기 는 scipy에서 NumPy와 기준의 예는
def replace(m, n, r, c): 
    i = 0 
    if len(n) + c > len(m[r]): 
     return 
    for each in n: 
     m[r][c] = n[i] 
     c += 1 
     i += 1 

당신이 예를 기반으로 매트릭스