【发布时间】:2014-11-05 04:33:13
【问题描述】:
这是我的函数,变量tracks是一个列表,列表的每个元素都是一个n x 3数组:
temp = np.array(np.zeros((n, n)))
for j in range(n-1):
for w in range(j + 1, n):
mindistance = np.zeros(len(tracks[j]))
for i in range(len(tracks[j])):
mindistance[i] = np.linalg.norm(min(np.fabs(np.array(tracks[w]) - tracks[j][i])))
temp[j][w]=np.sum(mindistance)/len(tracks[j])
我正在尝试计算表示空间中 3d 线的列表数组之间的最小距离,但出现错误:
ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()。
该错误可能与对min() 的调用有关,但我无法解决。以下是错误回溯:
Traceback (most recent call last):
File "<ipython-input-14-7fb640816626>", line 1, in <module>
runfile('/Users/G_Laza/Desktop/functions/Main.py', wdir='/Users/G_Laza/Desktop/functions')
File "/Applications/Spyder.app/Contents/Resources/lib/python2.7/spyderlib/widgets/externalshell/sitecustomize.py", line 580, in runfile
execfile(filename, namespace)
File "/Users/G_Laza/Desktop/functions/Main.py", line 42, in <module>
tempA = distance_calc.dist_calc(len(subset_A), subset_A) # distance matrix calculation
File "distance_calc.py", line 23, in dist_calc
mindistance[i] = np.linalg.norm(min(np.fabs(np.array(tracks[w]) - tracks[j][i])))
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
【问题讨论】:
-
请发布完整的 Traceback。
-
在引发错误之前,它会进入嵌套循环多远?
np.fabs(np.array(tracks[w]) - tracks[j][i])抛出错误时的值是多少? -
该值是一个数组,它在第一次计算中停止。
-
只是检查错误是否在
min中,您是否尝试使用np.min()或np.amin()? -
整数、浮点数、布尔值的数组?您了解错误的含义吗 - 在 shell 中尝试
if np.ones(4) == 1: pass。您是否尝试过仅使用该行的一部分添加语句以查看计算的哪一部分导致问题,然后查看这些操作数的值以了解其发生原因?