TSR
TSR

Reputation: 20436

Change first colum of numpy array

How to convert this numpy array:

array = np.array([[np.array([1]),2],[np.array([1]),2],[np.array([1]),2]])
print (array)
[[array([1]) 2]
 [array([1]) 2]
 [array([1]) 2]]

to this numpy array:

print(array)
[[1 2]
 [1 2]
 [1 2]]

How can I achieve this without a for loop?

This is what I tried but it doesn't work:

first_col = array[:,0]
first_col = np.array([i[0] for i in first_col])

Upvotes: 0

Views: 90

Answers (3)

JohanL
JohanL

Reputation: 6891

I don't even know if answering this is a good idea, since there must be a fundemental flaw in the design to even come up with a situation like this and the correct solution would be to fix that, rather than trying to mitigate the issue by converting the output.

Never-the-less, given the data, interestingly enough, it is possible to 'unpack' the structure using the numpy array method .astype():

import numpy as np
array = np.array([[np.array([1]),2],[np.array([1]),2],[np.array([1]),2]])
array = array.astype(int) # alt array = array.astype(float)

But, as stated above, this is treating the symptom of the problem, rather than the problem itself.

Upvotes: 2

jpp
jpp

Reputation: 164693

This is one way.

import numpy as np

arr = np.array([[np.array([1]),2],
                [np.array([1]),2],
                [np.array([1]),2]])

np.array([[i[0][0], i[1]] for i in arr])

# array([[1, 2],
#        [1, 2],
#        [1, 2]])

Upvotes: 0

Yserbius
Yserbius

Reputation: 1414

Try using map to convert it to a list:

map(lambda x: [list(x[0]), x[1]], array)

Upvotes: 0

Related Questions