给定三个X,Y和Z坐标的1D阵列,如何使用numpy转换为3D网格路径?
我设法使用numpy(即没有for循环)为2D做这个:
import numpy
def path_2d_numpy(x, y):
m1, m2 = numpy.meshgrid(x, y)
m1[1::2] = m1[1::2,::-1]
r = numpy.append(m1, m2)
r.shape = 2,-1
return r.T
from matplotlib import lines
from matplotlib import pyplot
def plot_path_2d(path):
x, y = path.T
pyplot.plot(x, y, '-ro', lw=3)
pyplot.show()
x = numpy.linspace(4, 1, 4)
y = numpy.linspace(1, 5, 5)
path = path_2d_numpy(x, y)
plot_path_2d(path)
Run Code Online (Sandbox Code Playgroud)
哪个输出:
...但是无法为3D做到这一点.显示纯python解决方案(即没有numpy):
import numpy
def path_3d(x, y, z):
nb_points =len(x)*len(y)*len(z)
path = numpy.empty((nb_points, 3))
xord, yord, i = True, True, 0
for …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个使用boost的C++库.
在这个库中,我想包含有关用于编译库的二进制版本的boost版本的信息.我可以使用宏BOOST_VERSION
,这很好.
我还想确定哪个是boost的运行时版本,所以我可以与用于编译我的库的boost版本进行比较.显然我不能使用宏,因为它会在编译时给我硬编码版本,而不是在运行时.
我需要的是一个boost函数(比如boost::get_version()
).有没有办法在提升中做到这一点?