Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert python list of points to numpy image array?

I have a python list of points (x/y coordinates):

   [(200, 245), (344, 248), (125, 34), ...]

It represents a contour on a 2d plane. I would like to use some numpy/scipy algorithms for smoothing, interpolation etc. They normally require numpy array as input. For example scipy.ndimage.interpolation.zoom.

What is the simplest way to get the right numpy array from my list of points?

EDIT: I added the word "image" to my question, hope it is clear now, I am really sorry, if it was somehow misleading. Example of what I meant (points to binary image array).

Input:

[(0, 0), (2, 0), (2, 1)]

Output:

[[0, 0, 1],
 [1, 0, 1]]

Rounding the accepted answer here is the working sample:

import numpy as np

coordinates = [(0, 0), (2, 0), (2, 1)]

x, y = [i[0] for i in coordinates], [i[1] for i in coordinates]
max_x, max_y = max(x), max(y)

image = np.zeros((max_y + 1, max_x + 1))

for i in range(len(coordinates)):
    image[max_y - y[i], x[i]] = 1
like image 309
Alex Avatar asked Oct 01 '12 09:10

Alex


People also ask

Can we convert list to NumPy array?

You can convert a list to a NumPy array by passing a list to numpy. array() . The data type dtype of generated numpy. ndarray is automatically determined from the original list but can also be specified with the dtype parameter.

What NumPy function allows you to convert a list to a NumPy array?

Method 1: Using numpy. In Python, the simplest way to convert a list to a NumPy array is with numpy. array() function. It takes an argument and returns a NumPy array. It creates a new copy in memory.

How do you convert a list to an array in Python?

To convert a list to array in Python, use the np. array() method. The np. array() is a numpy library function that takes a list as an argument and returns an array containing all the list elements.


1 Answers

Ah, better now, so you do have all the points you want to fill... then its very simple:

image = np.zeros((max_x, max_y))
image[coordinates] = 1

You could create an array first, but its not necessary.

like image 152
seberg Avatar answered Oct 26 '22 15:10

seberg