Is there a multi-dimensional version of arange/linspace in numpy? Is there a multi-dimensional version of arange/linspace in numpy? python python

Is there a multi-dimensional version of arange/linspace in numpy?


You can use np.mgrid for this, it's often more convenient than np.meshgrid because it creates the arrays in one step:

import numpy as npX,Y = np.mgrid[-5:5.1:0.5, -5:5.1:0.5]

For linspace-like functionality, replace the step (i.e. 0.5) with a complex number whose magnitude specifies the number of points you want in the series. Using this syntax, the same arrays as above are specified as:

X, Y = np.mgrid[-5:5:21j, -5:5:21j]

You can then create your pairs as:

xy = np.vstack((X.flatten(), Y.flatten())).T

As @ali_m suggested, this can all be done in one line:

xy = np.mgrid[-5:5.1:0.5, -5:5.1:0.5].reshape(2,-1).T

Best of luck!


This is just what you are looking for:

matr = np.linspace((1,2),(10,20),10)

This means:

For the first column;from 1 of (1,2) to 10 of (10,20), put the increasing 10 numbers.

For the second column;from 2 of (1,2) to 20 of (10,20), put the incresing 10 numbers.

And the result will be:

[[ 1.  2.] [ 2.  4.] [ 3.  6.] [ 4.  8.] [ 5. 10.] [ 6. 12.] [ 7. 14.] [ 8. 16.] [ 9. 18.] [10. 20.]]

You may also keep only one column's values increasing, for example, if you say that:

matr = np.linspace((1,2),(1,20),10)

The first column will be from 1 of (1,2) to 1 of (1,20) for 10 times which means that it will stay as 1 and the result will be:

[[ 1.  2.] [ 1.  4.] [ 1.  6.] [ 1.  8.] [ 1. 10.] [ 1. 12.] [ 1. 14.] [ 1. 16.] [ 1. 18.] [ 1. 20.]]


I think you want np.meshgrid:

Return coordinate matrices from coordinate vectors.

Make N-D coordinate arrays for vectorized evaluations of N-D scalar/vector fields over N-D grids, given one-dimensional coordinate arrays x1, x2,..., xn.

import numpy as npx = np.arange(-5, 5.1, 0.5)y = np.arange(-5, 5.1, 0.5)X,Y = np.meshgrid(x,y)

you can convert that to your desired output with

XY=np.array([X.flatten(),Y.flatten()]).Tprint XYarray([[-5. , -5. ],       [-4.5, -5. ],       [-4. , -5. ],       [-3.5, -5. ],       [-3. , -5. ],       [-2.5, -5. ],       ....       [ 3. ,  5. ],       [ 3.5,  5. ],       [ 4. ,  5. ],       [ 4.5,  5. ],       [ 5. ,  5. ]])