[SciPy-user] problem ValueError: array is not broadcastable to correct shape - convert shape (x, ) to (x, 1)
Tan Tran
fragon25@yahoo....
Sun Jan 11 21:58:53 CST 2009
Hello,
I'm trying to convert a command like this in matlab to python numpy
mysel((col3 ==11 & (col4 ==16)) = y((col3 ==11 & (col4 ==16)), col0);
from numpy import *
y = array([ [ 0, 1,11,15, 4], \
[10,11,12,16,14], \
[20,21,11,17,24], \
[30,31,12,15,34], \
[40,41,11,16,44], \
[50,51,12,17,54], \
[60,61,11,15,64], \
[70,71,11,16,74], \
[80,81,11,17,84], \
[90,91,12,15,94]])
col3 = 2
col4 = 3
col0 = 0
mysel = zeros((10, 1),int)
mypick = y[:,col0][(y[:,col3] == 11) & (y[:,col4] == 16)]
print mypick
print mypick.shape
aa = mysel[(y[:,col3] == 11) & (y[:,col4] == 16)]
print aa
print aa.shape
mysel[(y[:,col3] == 11) & (y[:,col4] == 16)] = mypick <-- error here ValueError: array is not broadcastable to correct shape
I check the shape of two sides and see they are not adequate. The shape of mypick is (2,) and the shape of mysel[(y[:,col3] == 11) & (y[:,col4] == 16)] is (2,1).
I have a problem selecting elements in numpy. It's always return something with shape (x,). How can I reformat it to the shape that I want like (x,1)?
Is there other way to do the task?
Thanks,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/scipy-user/attachments/20090111/9abf5b48/attachment.html
More information about the SciPy-user
mailing list