对于平面中任意一对2D点,我想将连接向量分解为由精度因子指定的零件。但是我希望它始终包含起点和终点。作为一个额外的功能,我期待从向量的末尾到开头的分段将从头到尾给我相同的分段(当然在翻转之后)。正如我所看到的,numpy.linspace
自然地满足了这个条件,除了那些情况
精度太大,只有一点。是否有任何内置函数来处理这种情况或任何提示,我将能够纠正这种行为?
import numpy as np
alpha = np.array([0,0])
beta = np.array([1,1])
alpha_beta_dist = np.linalg.norm(beta - alpha)
for i in range(10):
precision = np.random.random(1)
traversal = np.linspace(0.0, 1.0, num = alpha_beta_dist / float(precision))
traversal2 = np.fliplr([np.linspace(1.0, 0.0, num = alpha_beta_dist / float(precision))])
traversal2 = traversal2[0]
if (traversal != traversal2).all():
print 'precision: ', precision
print 'taversal: ', traversal
print 'taversal2: ', traversal2[0]
答案 0 :(得分:4)
确保num
至少为2:
traversal = np.linspace(0.0, 1.0,
num=max(alpha_beta_dist/float(precision), 2))
np.linspace
小于2,否则 num
将返回两个端点(默认情况下):
In [23]: np.linspace(0, 1, num=0)
Out[23]: array([], dtype=float64)
In [24]: np.linspace(0, 1, num=1)
Out[24]: array([ 0.])
In [25]: np.linspace(0, 1, num=2)
Out[25]: array([ 0., 1.])