我有一个包含起点和终点的矩阵,并希望在它们之间创建网格。现在这是线性的,但我希望能够将它用于非线性网格(我自己的)。
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
,这不是很好且可读。有什么更干净的方法来实现这个目标?
答案 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