2015-06-25 6 views
0

У меня есть две переменные, которые я хочу выполнять на них по элементарным логическим операциям. Однако я получаю следующее сообщение об ошибке:Логическая операция по массиву numpy, изначально представляющему собой кадр данных pandas

tp = sum(actual & predicted) 
TypeError: ufunc 'bitwise_and' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' 

Ниже мой код:

import pandas as pd 
import numpy as np 

train = 'train.tsv' 
submission = 'submission1234.csv' 

trainSearchStream = pd.read_csv(train,sep='\t') 

sample = pd.read_csv(path + 'sampleSubmission.csv') 
preds = np.array(pd.read_csv(submission, header = None)) 
index = sample.ID.values - 1 
sample['IsClick'] = preds[index] 

actual = np.array(trainSearchStream['IsClick'].dropna()) 
predicted = np.array(sample['IsClick']) 

tp = sum(actual & predicted) 
+1

Пожалуйста, напишите 'actual.dtype' и' predicted.dtype'. – unutbu

+0

я получаю float64 как для @unutbu – MAS

+0

Кроме того, я получаю следующее: (типа (фактический)) печати (типа (прогноз)) <типа 'numpy.ndarray'> <типа 'numpy.ndarray'> – MAS

ответ

1

За комментариями, actual и predicted оба имеют DTYPE float64. Таким образом, проблема может быть воспроизведен просто с

In [467]: actual = np.random.random(10) 

In [468]: predicted = np.random.random(10) 

In [469]: actual & predicted 
TypeError: ufunc 'bitwise_and' not supported for the input types, and the inputs 
could not be safely coerced to any supported types according to the casting rule 
''safe'' 

& является the bitwise_and operator. Это имеет смысл для целых чисел и булевых значений; это значение doesn't make sense для значений с плавающей запятой.

Вам нужно будет объяснить, что вы ожидали от этого, прежде чем мы сможем предложить исправить ошибку.

Смежные вопросы