Добавление поля в структурированный массив NumPy (2) - PullRequest
14 голосов
/ 13 марта 2011

Я знаю, что уже был вопрос по этой теме (самый простой способ добавить поле в структурированный массив numpy), см.

Добавление поля в структурированный массив NumPy

но у меня есть вопрос об ответе, который там дан ...

Если вы используете numpy 1.3, есть также numpy.lib.recfunctions.append_fields ()

У меня все еще есть numpy 1.3, но он не распознает эту функцию, и я также не нашел ничего об этом в документации numpy. Что случилось с функцией? Есть ли другая функция, которая может сделать то же самое?

Ответы [ 3 ]

14 голосов
/ 13 марта 2011

http://projects.scipy.org/numpy/browser/branches/1.3.x/numpy/lib/recfunctions.py?rev=8229

Вы импортировали?

from numpy.lib import recfunctions

recfunctions.append_field(*your_args)

Похоже, все работает:

Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.__version__
'1.3.0'
>>> from numpy.lib.recfunctions import append_fields
>>> append_fields
<function append_fields at 0x9e3e80c>
>>> 
11 голосов
/ 15 июля 2015

Вот конкретный пример того, как использовать append_fields(..) (правда, на основе других ответов здесь):

import numpy as np
x = np.array(np.arange(0,10), dtype = [('x', float)])
y = np.array(np.arange(10,20), dtype = [('y', float)])

from numpy.lib.recfunctions import append_fields

z = append_fields(x, 'y', y)

, где

z.dtype.names

даст

('x', 'y')

обратите внимание, что y in также может быть "обычным" ndarray без имен столбцов:

y = np.arange(10,20)

или вы можете переименовать столбец y во что-то другое (даже еслиy является структурированным массивом с именами столбцов):

z = append_fields(x, 'p', y)

(протестировано в numpy 1.6.1)

2 голосов
/ 13 марта 2011

Что касается документации для повторных функций, вот она: http://pyopengl.sourceforge.net/pydoc/numpy.lib.recfunctions.html

Вы также можете прочитать этот разговор: http://comments.gmane.org/gmane.comp.python.numeric.general/39537

Если вы не можете понять этопрочитав их, затем предоставьте несколько примеров кода (например, импортировали ли вы numpy.lib.recfunctions?) и сообщение об ошибке или нежелательный результат, чтобы мы могли определить, как это исправить.

...