I have below strange behavior in numpy. Can anyone shed some light on this:
I have an array with each item as a list object. You will get this when you use
scipy.sparse
In [369]: k
Out[369]: array([[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]], dtype=object)
Assigning value by using slicing is working
In [370]: k[0:3] = [[i+3] for i in range(3)]
In [371]: k
Out[371]: array([[3], [4], [5], [3], [4], [5], [6], [7], [8], [9]], dtype=object)
But assigning value by using a list for slicing is NOT
In [374]: k[[0, 1,2]] = [[i+3] for i in range(3)]
In [375]: k
Out[375]: array([3, 4, 5, [3], [4], [5], [6], [7], [8], [9]], dtype=object)
You can see those list objects casted to integer.
Is this a bug or a feature? if I want to slice it with random index without casting it, what should I do?
--
Gen-Nan Chen, Ph. D.
email:
gnchen@gmail.com