Re: [Numpy-discussion] convert array to tuples?
On 4/5/11 10:52 AM, Sebastian Haase wrote: > How about fixing PIL... I know that there is not a good track record > of getting patches into PIL , > but did you get to the bottom of it and find how draw.line is implemented? no. I haven't. And yes adapting PIL to use the buffer interface for this kind of thing would be great. I also have wanted to do that for wxPython, where it would be welcome, but still haven't gotten around to it. > BTW, is it drawing anti-aliased lines ? Not with the ImageDraw module, but there is a new AggDraw module that should be more pretty. On 4/5/11 11:49 AM, Mark S Niemczyk wrote: > Just a suggestion (I am very new to Numpy), but wouldn't > > draw.line(tuple(points.tolist())) > > accomplish what you want. nope, tolist() creates a list of lists -- tuple() only converts the outer list to a tuple, which I why I did the list comprehension. On 4/5/11 10:53 AM, josef.p...@gmail.com wrote: > does a structured dtype work? Good idea -- I'll give it a try -- indeed it does: dt = np.dtype([('x', np.int32),('y',np.int32)]) draw.line(points.view(dtype=dt).reshape((-1,)).tolist(), fill="rgb(0,255,0)", width=4) but it's not any faster, alas. The fastest I've come up with is putting the elements in a single 1-d list. PIL can take either a sequence of tuples: [(x,y),(x,y),...] or the flattened version: [x,y,x,y,x,y,x,y,...] So this is the fastest: draw.line(points.flatten().tolist(), fill="rgb(0,255,0)", width=4) Thanks all, -Chris -- Christopher Barker, Ph.D. Oceanographer Emergency Response Division NOAA/NOS/OR&R(206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception chris.bar...@noaa.gov ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] convert array to tuples?
Just a suggestion (I am very new to Numpy), but wouldn't draw.line(tuple(points.tolist())) accomplish what you want. Based on my reading, the ndarray.tolist method would return a Python list of elements; then Python's built-in tuple function would complete the conversion. Regards, Mark On Apr 5, 2011, at 12:02 PM, Christopher Barker wrote: > HI folks, > > What's the fastest way to convert a numpy array to tuples? > > Unfortunately, not all packages take arbitrary sequences when they are > expecting a list of tuples. In this case, I'm using PIL's ImageDraw, and > want to do: > > draw.line(points) > > (points is an Nx2 numpy array of ints) > > but if I pass in an array, I get, oddly enough, nothing. NO error, just > nothing drawn. > > if I do: > > draw.line(points.tolist()) > > SystemError: new style getargs format but argument is not a tuple > > So I seem to need tuples. This works: > > draw.line([tuple(p) for p in points.tolist()]) > > but that seems like it would be slower than it should be (to be honest, > not profiled). > > Is there a faster way? > > Maybe numpy should have a ndarray.totuple() method. > > -Chris > > > > > > > -- > Christopher Barker, Ph.D. > Oceanographer > > Emergency Response Division > NOAA/NOS/OR&R(206) 526-6959 voice > 7600 Sand Point Way NE (206) 526-6329 fax > Seattle, WA 98115 (206) 526-6317 main reception > > chris.bar...@noaa.gov > ___ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] convert array to tuples?
On Tue, Apr 5, 2011 at 1:02 PM, Christopher Barker wrote: > HI folks, > > What's the fastest way to convert a numpy array to tuples? > > Unfortunately, not all packages take arbitrary sequences when they are > expecting a list of tuples. In this case, I'm using PIL's ImageDraw, and > want to do: > > draw.line(points) > > (points is an Nx2 numpy array of ints) > > but if I pass in an array, I get, oddly enough, nothing. NO error, just > nothing drawn. > > if I do: > > draw.line(points.tolist()) > > SystemError: new style getargs format but argument is not a tuple > > So I seem to need tuples. This works: > > draw.line([tuple(p) for p in points.tolist()]) > > but that seems like it would be slower than it should be (to be honest, > not profiled). > > Is there a faster way? > > Maybe numpy should have a ndarray.totuple() method. does a structured dtype work? Josef > > -Chris > > > > > > > -- > Christopher Barker, Ph.D. > Oceanographer > > Emergency Response Division > NOAA/NOS/OR&R (206) 526-6959 voice > 7600 Sand Point Way NE (206) 526-6329 fax > Seattle, WA 98115 (206) 526-6317 main reception > > chris.bar...@noaa.gov > ___ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] convert array to tuples?
On Tue, Apr 5, 2011 at 7:02 PM, Christopher Barker wrote: > HI folks, > > What's the fastest way to convert a numpy array to tuples? > > Unfortunately, not all packages take arbitrary sequences when they are > expecting a list of tuples. In this case, I'm using PIL's ImageDraw, and > want to do: > > draw.line(points) > > (points is an Nx2 numpy array of ints) > > but if I pass in an array, I get, oddly enough, nothing. NO error, just > nothing drawn. > > if I do: > > draw.line(points.tolist()) > > SystemError: new style getargs format but argument is not a tuple > > So I seem to need tuples. This works: > > draw.line([tuple(p) for p in points.tolist()]) > > but that seems like it would be slower than it should be (to be honest, > not profiled). > > Is there a faster way? > > Maybe numpy should have a ndarray.totuple() method. > > -Chris > How about fixing PIL... I know that there is not a good track record of getting patches into PIL , but did you get to the bottom of it and find how draw.line is implemented? BTW, is it drawing anti-aliased lines ? - Sebastian Haase ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
[Numpy-discussion] convert array to tuples?
HI folks, What's the fastest way to convert a numpy array to tuples? Unfortunately, not all packages take arbitrary sequences when they are expecting a list of tuples. In this case, I'm using PIL's ImageDraw, and want to do: draw.line(points) (points is an Nx2 numpy array of ints) but if I pass in an array, I get, oddly enough, nothing. NO error, just nothing drawn. if I do: draw.line(points.tolist()) SystemError: new style getargs format but argument is not a tuple So I seem to need tuples. This works: draw.line([tuple(p) for p in points.tolist()]) but that seems like it would be slower than it should be (to be honest, not profiled). Is there a faster way? Maybe numpy should have a ndarray.totuple() method. -Chris -- Christopher Barker, Ph.D. Oceanographer Emergency Response Division NOAA/NOS/OR&R(206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception chris.bar...@noaa.gov ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion