Numeric + wxPython, can't understand a bug...
Robert Kern
robert.kern at gmail.com
Sat Apr 28 00:40:45 EDT 2007
John Ladasky wrote:
> Hi, folks,
>
> This probably has to do with Numeric and not with wxPython, but I
> mention both for completeness.
>
> My OS: Win2000
> Python: 2.3.4
> wx: 2.6.1.0, Unicode version
> Numeric: 23.8
>
>
> Here's the minimal code:
> ================================================
>
> height = 50
> width = 60
> L = []
> for y in range(height):
> for x in range(width):
> L.append(wx.Point(3+(2*x+y%2)*4, 3+7*y))
> print width, height, len(L)
> pos = reshape(array(L), (height, width))
>
>
>
> And here's the output:
> ================================================
>
> 60 50 3000
>
> pos = reshape(array(L), (height, width))
> ValueError: total size of new array must be unchanged
>
>
>
> I've used exactly this approach to create 2D arrays from lists of
> numbers, with no problems. Why does this fail with wx.Point objects?
> Why is it telling me that I'm changing the array size, when the
> dimensions indicate that I am NOT? Typecasting the array as
> containing PyObject items does not change the error message...
wx.Point objects are being recognized as sequences by array(). Consequently,
reshape() thinks you are trying to reshape a (height*width, 2) array into a
(height, width) array. You might want to create an empty (height, width)
PyObject array first, and simply assign wx.Point values into it. That bypasses
array()'s attempt at intuiting the structure of the list.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list
mailing list