By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,519 Members | 2,258 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,519 IT Pros & Developers. It's quick & easy.

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

P: 5
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.
Oct 29 '14 #1
Share this question for a faster answer!
Share on Google+

Post your reply

Sign in to post your reply or Sign up for a free account.