一次创建几个网格

时间:2015-03-17 15:05:23

标签: python numpy scipy

我有一个包含起点和终点的矩阵,并希望在它们之间创建网格。现在这是线性的,但我希望能够将它用于非线性网格(我自己的)。

test = np.array([[0.1, 0.5], [0.0001, 0.9]]) #start points in row 0, end points in row 1
nL = 10 # number of grid points
np.hstack((np.linspace(0.1, 0.0001, nL).reshape((-1,1)), np.linspace(0.5, 0.9, nL).reshape((-1,1)))) 
# expected output. 
array([[ 0.1  ,  0.5  ],
       [ 0.089,  0.544],
       [ 0.078,  0.589],
       [ 0.067,  0.633],
       [ 0.056,  0.678],
       [ 0.045,  0.722],
       [ 0.033,  0.767],
       [ 0.022,  0.811],
       [ 0.011,  0.856],
       [ 0.   ,  0.9  ]])

目前,这依赖于堆叠linspace,这不是很好且可读。有什么更干净的方法来实现这个目标?

1 个答案:

答案 0 :(得分:0)

如何利用.T

import numpy as np

test = np.array([[0.1, 0.5], [0.0001, 0.9]]) # start points in row 0, end points in row 1
nL = 10 # number of grid points
x1 = np.hstack((np.linspace(0.1, 0.0001, nL).reshape((-1,1)),
                np.linspace(0.5, 0.9, nL).reshape((-1,1))))

# shorter version:
x2 = np.vstack([np.linspace(t[0], t[1], nL).T for t in test.T]).T

print(np.all(x1==x2)) # gives True