[Numpy-discussion] str == int puzzlement

Sturla Molden sturla at molden.no
Wed Jul 28 22:24:14 EDT 2010


>
>> I'll call this a bug in NumPy's broadcasting. "x == 1" should have
>> returned:
>
> This is probably related:
>
>
> In [22]: a = np.array(['a','b'])
>
> In [23]: a + 'c'
> ---------------------------------------------------------------------------
> TypeError                                 Traceback (most recent call
> last)
>
> C:\Windows\system32\<string> in <module>()
>
> TypeError: unsupported operand type(s) for +: 'numpy.ndarray' and 'str'
>
> In [24]: a + 1
> ---------------------------------------------------------------------------
> TypeError                                 Traceback (most recent call
> last)
>
> C:\Windows\system32\<string> in <module>()
>
> TypeError: unsupported operand type(s) for +: 'numpy.ndarray' and 'int'


And setting the dtype to object, we get the correct behavior:

In [30]: a = np.array(['a','b'],dtype=object)

In [31]: a == 1
Out[31]: array([False, False], dtype=bool)

In [32]: a + 'c'
Out[32]: array([ac, bc], dtype=object)

In [33]: a + 1
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)

C:\Windows\system32\<string> in <module>()

TypeError: cannot concatenate 'str' and 'int' objects




The bug also seems to affect arrays with unicode strings, btw.


Sturla









More information about the NumPy-Discussion mailing list