Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replace sub part of matrix by another small matrix in numpy

I am new to Numpy and want to replace part of a matrix. For example, I have two matrices, A, B generated by numpy

In [333]: A = ones((5,5))  In [334]: A Out[334]:  array([[ 1.,  1.,  1.,  1.,  1.],        [ 1.,  1.,  1.,  1.,  1.],        [ 1.,  1.,  1.,  1.,  1.],        [ 1.,  1.,  1.,  1.,  1.],        [ 1.,  1.,  1.,  1.,  1.]])  In [335]: B Out[335]:  array([[ 0.1,  0.2],        [ 0.3,  0.4]]) 

Eventually, I want to make A be the following matrix.

In [336]: A Out[336]:  array([[ 1.,  1.,  1.,  1.,  1.],        [ 1.,  1.,  1.,  1.,  1.],        [ 1.,  1.,  1.,  1.,  1.],        [ 1.,  1.,  1.,  0.1,  0.2],        [ 1.,  1.,  1.,  0.3,  0.4]]) 

and/or the following

In [336]: A Out[336]:  array([[ 1.,  1.,  1.,  0.1,  0.2],        [ 1.,  1.,  1.,  0.3,  0.4],        [ 1.,  1.,  1.,  1.,  1.],        [ 1.,  1.,  1.,  1.,  1.],        [ 1.,  1.,  1.,  1.,  1.]]) 

I tried like following but it didn't work. I don't have any idea now :(

A[[0,1],:][:,[3,4]] = B 

or even I tried like

A[[0,1],:][:,[3,4]] = 1 

to check whether the four cell are changed or not. Do you have any idea?

like image 905
sangheestyle Avatar asked Oct 22 '14 11:10

sangheestyle


People also ask

How do you split a matrix by another matrix in Python?

divide() in Python. numpy. divide(arr1, arr2, out = None, where = True, casting = 'same_kind', order = 'K', dtype = None) : Array element from first array is divided by elements from second element (all happens element-wise).

How do you copy a matrix into another matrix in Python?

copy() With the help of Numpy matrix. copy() method, we can make a copy of all the data elements that is present in matrix. If we change any data element in the copy, it will not affect the original matrix.

How do I remove part of a NumPy array?

To remove an element from a NumPy array: Specify the index of the element to remove. Call the numpy. delete() function on the array for the given index.


1 Answers

Here is how you can do it:

>>> A[3:5, 3:5] = B >>> A array([[ 1. ,  1. ,  1. ,  1. ,  1. ],        [ 1. ,  1. ,  1. ,  1. ,  1. ],        [ 1. ,  1. ,  1. ,  1. ,  1. ],        [ 1. ,  1. ,  1. ,  0.1,  0.2],        [ 1. ,  1. ,  1. ,  0.3,  0.4]]) 
like image 177
NPE Avatar answered Sep 24 '22 15:09

NPE