2013-06-19 3 views
0
import numpy as np 

У меня есть этот Numpy массив:Python Numpy массив> Присвоение значения строки и логическое сравнение

data = np.array(data) 
# assume it has x number of rows and y columns 

1) на одном пункте я заменить 10-й значения столбцов следующим образом со значением строки:

data[data[0::,10] == "C",10] = "0" 

2) В цикле с индексом i, я делаю это сравнение путем преобразования строки в float-

x = (data[0::,10].astype(np.float) == i) 

Это бросает ValueError: не удалось преобразовать строку плавать:

Почему?

+0

Вы можете проверить все другие строковые значения в 10-й колонке присутствуют (не пустые строки) и числовые? – mg007

+0

Я отредактировал оригинальное сообщение, чтобы сказать, что меня интересует 10-я колонка. – Selvam

ответ

1

Из вашего сообщения об ошибке в столбце, который вы пытаетесь преобразовать, есть '' (пустая строка). Убедитесь, что столбец, который вы сравниваете, имеет только строки, которые конвертируются в float. Вы можете создать isfloat() функцию, чтобы сделать это для вас:

def isfloat(x): 
    try: 
     float(x) 
     return True 
    except: 
     return False 
isfloat = np.vectorize(isfloat) 

Затем используйте в вашем примере:

data[ data[:,col] == 'C', col ] = '0' 

x = (data[ isfloat(data[:,col]), col ].astype(np.float) == i) 
+0

Благодарим за отзыв. – Selvam

+0

Что такое x в isfloat (x)? – Selvam

+0

@Selvam, когда вы создаете функцию в Python, вы можете передать некоторые аргументы. 'x' является аргументом функции' isfloat() ' –

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