林空间,总是包括最后一点



对于平面中的任意一对 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]

确保num至少为 2:

traversal = np.linspace(0.0, 1.0,
                        num=max(alpha_beta_dist/float(precision), 2))

np.linspace将返回两个终结点(默认情况下),除非num小于 2:

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.])

最新更新