2

对于平面中的任意一对二维点,我想将连接向量分解为由精度因子指定的部分。但是我希望它始终包含起点和终点。作为一个额外的功能,我期望从向量末尾到开头的分段会给我从开头到结尾的相同分段(当然是在翻转之后)。正如我所看到的,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]
4

1 回答 1

4

确保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.])
于 2013-11-05T13:41:53.583 回答