Numpy Object Array Of Numerical Arrays
I want to create an array with dtype=np.object, where each element is an array with a numerical type, e.g int or float. For example: >>> a = np.array([1,2,3]) >>>
Solution 1:
It's not exactly pretty, but...
import numpy as np
a = np.array([1,2,3])
b = np.array([None, a, a, a])[1:]
print b.dtype, b[0].dtype, b[1].dtype
# object int32 int32
Solution 2:
a = np.array([1,2,3])
b = np.empty(3, dtype='O')
b[:] = [a] * 3
should suffice.
Solution 3:
I can't find any elegant solution, but at least a more general solution to doing everything by hand is to declare a function of the form:
defobject_array(*args):
array = np.empty(len(args), dtype=np.object)
for i inrange(len(args)):
array[i] = args[i]
return array
I can then do:
a = np.array([1,2,3])
b = object_array(a,a,a)
I then get:
>>>a = np.array([1,2,3])>>>b = object_array(a,a,a)>>>print b.dtype
object
>>>print b.shape
(3,)
>>>print b[0].dtype
int64
Solution 4:
I think anyarray is what you need here:
b = np.asanyarray([a,a,a])
>>> b[0].dtype
dtype('int32')
not sure what happened to the other 32bits of the ints though.
Not sure if it helps but if you add another array of a different shape, it converts back to the types you want:
import numpy as np
a = np.array([1,2,3])
b = np.array([1,2,3,4])
b = np.asarray([a,b,a], dtype=np.object)
print(b.dtype)
>>> objectprint(b[0].dtype)
>>> int32
Post a Comment for "Numpy Object Array Of Numerical Arrays"