ram4189
ram4189

Reputation: 21

convert python map objects to array or dataframe

How can we convert map objects(derived from ndarray objects) to a dataframe or array object in python.

I have a normally distributed data with size 10*10 called a. There is one more data containing 0 and 1 of size 10*10 called b. I want to add a to b if b is not zero else return b.

I am doing it through map. I am able to create the map object called c but can't see the content of it. Can someone please help.

a=numpy.random.normal(loc=0.0,scale=0.001,size=(10,10))    
b = np.random.randint(2, size=a.shape)
c=map(lambda x,y : y+x if y!=0 else x, a,b)

a=[[.24,.03,.87],
   [.45,.67,.34],
   [.54,.32,.12]]

b=[[0,1,0],
  [1,0,0],
  [1,0,1]]

then c should be as shown below.

c=[[0,1.03,.87],
  [1.45,0,0],
  [1.54,0,1.12]
  ]

Upvotes: 0

Views: 1078

Answers (2)

Pranav Chaudhary
Pranav Chaudhary

Reputation: 190

Since, a and b are numpy arrays, there is a numpy function especially for this use case as np.where (documentation).

If a and b are as follows,

a=np.array([[.24,.03,.87],
            [.45,.67,.34],
            [.54,.32,.12]])

b=np.array([[0,1,0],
            [1,0,0],
            [1,0,1]])

Then the output of the following line,

np.where(b!=0, a+b, b)

will be,

[[0.   1.03 0.  ]
 [1.45 0.   0.  ]
 [1.54 0.   1.12]]

Upvotes: 0

HakunaMaData
HakunaMaData

Reputation: 1321

np.multiply(a,b) + b

should do it

Here is the output

array([[0.  , 1.03, 0.  ],
       [1.45, 0.  , 0.  ],
       [1.54, 0.  , 1.12]])

Upvotes: 2

Related Questions