Форум сайта python.su
Добрый день.
Осваиваю Python для решения небольших задач и тестирования алгоритмов обработки пространственных данных. Столкнулся с непонятным поведением модуля NumPy. Возможно, кто-то знает, в чем проблема?
Пытаюсь создать и заполнить массив с именованными столбцами. При попытке присвоить элементу массива значение, получаю ошибку:
>>> LAS = np.empty((5, 2)) >>> LAS.dtype = [('x','float64'),('y','float64')] >>> LAS[0,0] = 5 Traceback (most recent call last): File "<pyshell#7>", line 1, in <module> LAS[0,0] = 5 TypeError: a bytes-like object is required, not 'int' >>>
>>> LAS = np.empty((5, 2)) >>> LAS.dtype = 'float64' >>> LAS[0,0] = 5 >>> print (LAS[0,0]) 5.0
Отредактировано denant (Июль 8, 2016 10:57:04)
Офлайн
denant
код на форумах надо оборачивать в специальные теги code в квадратных скобках (смотрите иконку в окошке набора текста сообщения). Иначе ваш не оформленный код “съедается” и его уже нельзя разобрать. Переоформите сообщение.
Офлайн
Сорри, не знал. Переоформил исходное сообщение. Надеюсь, теперь правильно.
Офлайн
Код ниже не выдаст ошибок, но я не знаю делает ли он то что вам нужно
LAS = np.empty((5, 2), dtype=[('x', np.float64), ('y', np.float64)]) LAS[0, 0] = np.float64(5)
Офлайн
Да, так ошибок нет. Но результат совсем другой.
>>> LAS = np.empty((5, 2), dtype=[('x', np.float64), ('y', np.float64)]) >>> LAS[0, 0] = np.float64(5) >>> print(LAS[0, 0]) (5.0, 0.0) >>>
Отредактировано denant (Июль 8, 2016 20:29:38)
Офлайн
Если вам нужно работать с именованными столбцами, может вам посмотреть на pandas.DataFrame.
from pandas import DataFrame dc = {'A':[14.00,90.20,90.95,96.27,91.21],'B':[103.02,107.26,110.35,114.23,114.68], 'C':['big','small','big','small','small']} print DataFrame(dc)
A B C 0 14.00 103.02 big 1 90.20 107.26 small 2 90.95 110.35 big 3 96.27 114.23 small 4 91.21 114.68 small
Офлайн