python the-truth-value-of-array ...暧昧错误

时间:2016-01-06 17:52:05

标签: python arrays csv numpy vector

我试图使用numpy将2个向量相乘并进行比较,但有些情况下它会给我错误..数据来自CSV文件 我找到了

The truth value of an array with more than one element is ambigous when trying to index an array

这种类型的更多情况,但它与我的情况真的不同.. 我的代码:

import sys
import numpy as np
data = np.loadtxt(sys.argv[1],  delimiter = ',')
X = data[:, 1:]
Y = data[:, 0]
   #argv[1] is mnist_train_1vs7vs8.csv
wMatrix=(3,len(X[0]))
np.zeros(wMatrix)
for i in range(0,len(Y)):
        maxWx=0
        for wIndex in range (0,1):
            if ( np.dot(wMatrix[wIndex] ,X[i]) < np.dot(wMatrix[wIndex+1],X[i]) ):
                maxWx=wIndex+1

它给了我错误:

ValueError: The truth value of an array with more than one element is   
ambiguous. 
Use a.any() or a.all()`

我只想尝试将矢量与相同大小的矢量相乘,我不明白为什么它不会让我... HELP ..?

1 个答案:

答案 0 :(得分:3)

如果按照@kindall的建议并打印出np.dot(wMatrix[wIndex] ,X[i]) < np.dot(wMatrix[wIndex+1],X[i])的值,你会发现它是一系列布尔值。

你应该做的事情如下:

res = np.dot(wMatrix[wIndex] ,X[i]) < np.dot(wMatrix[wIndex+1],X[i])
if res.all():
   ...

这取决于您在<中的实际含义:)