
This seems odd to me:
A=np.array([['%.3f','%d'],['%s','%r']]).view(np.chararray) A % np.array([[1,2],[3,4]])
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/opt/local/lib/python2.5/site-packages/numpy/core/defchararray.py", line 126, in __mod__ newarr[:] = res ValueError: shape mismatch: objects cannot be broadcast to a single shape
Is this expected behavior? The % gets broadcast as I'd expect for 1D arrays, but more dimensions fail as above. Changing the offending line in defchararray.py to "newarr.flat = res" makes it behave properly.

2008/7/18 Alan McIntyre alan.mcintyre@gmail.com:
This seems odd to me:
A=np.array([['%.3f','%d'],['%s','%r']]).view(np.chararray) A % np.array([[1,2],[3,4]])
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/opt/local/lib/python2.5/site-packages/numpy/core/defchararray.py", line 126, in __mod__ newarr[:] = res ValueError: shape mismatch: objects cannot be broadcast to a single shape
Is this expected behavior? The % gets broadcast as I'd expect for 1D arrays, but more dimensions fail as above. Changing the offending line in defchararray.py to "newarr.flat = res" makes it behave properly.
That looks like a bug to me. I would have expected at least one of the following to work:
A % [[1, 2], [3, 4]] A % 1 A % (1, 2, 3, 4)
and none of them do.
Stéfan

On Fri, Jul 18, 2008 at 8:32 AM, Stéfan van der Walt stefan@sun.ac.za wrote:
That looks like a bug to me. I would have expected at least one of the following to work:
A % [[1, 2], [3, 4]] A % 1 A % (1, 2, 3, 4)
and none of them do.
I wouldn't expect the last one to work, since the shapes are different. The first two work if I use .flat to assign the result.
Since this actually changes the existing behavior of chararray, I figured it deserved a tracker item: http://scipy.org/scipy/numpy/ticket/856
participants (2)
-
Alan McIntyre
-
Stéfan van der Walt