How to replace only 1d values in 2d array after filter using numpy in python



  • Hi,
    How to replace only 1d values in 2d array after filter using numpy in python without loop i.e in pythonic way.

    I want to filter only t2 rows and replace values in second column ( middle column ).

    example:

    x = np.array([['t1',10,20],['t2',11,22],['t2',12,23], ['t3',21,32]])

    x
    array([['t1', '10', '20'],
    ['t2', '11', '22'],
    ['t2', '12', '23'],
    ['t3', '21', '32']],
    dtype='|S2')

    replace_value_for_t2_col1 = [100,101]

    so expected output is

    array([['t1', '10', '20'],
    ['t2', '100', '22'],
    ['t2', '101', '23'],
    ['t3', '21', '32']],
    dtype='|S2')

    What i tried was,

    Filter rows for t2

    x[x[:,0]=='t2']

    array([['t2', '11', '22'],
    ['t2', '12', '23']],
    dtype='|S2')

    x[x[:,0]=='t2'][:,1] = np.array([101,102])

    Seems right, but not replacing. i guess it make a copy when we slice using [:,1], so its not changing in same array.

    Please suggest me any brilliant ,simple and pythonic ideas, techniques.


  • Lifetime Qt Champion

    Hi,

    You're currently out of the forum scope. You should rather go to a python forum for that question.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.