Numeric + wxPython, can't understand a bug...

J

John Ladasky

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...

Thanks for any advice!



+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
| Ladasky Home Solar, Inc.: blowing sunshine up your |
| power grid since March 24, 2005. Fiat lux! |
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
| Uptime Downtime kWh generated kWh consumed |
| 744 days 13 hours 12886 14321 |
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
 
R

Robert Kern

John said:
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
 
J

John Ladasky

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.

Thanks for the heads-up, Robert. I did as you suggested, and it works
fine. I'll need to read more about Numeric's array init procedure --
what it does it not immediately obvious to a newcomer.

+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
| Ladasky Home Solar, Inc.: blowing sunshine up your |
| power grid since March 24, 2005. Fiat lux! |
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
| Uptime Downtime kWh generated kWh consumed |
| 744 days 13 hours 12886 14321 |
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,013
Latest member
KatriceSwa

Latest Threads

Top