Добавление поля в структурированный массив numpy (2)
Я знаю, что уже был вопрос об этой теме (самый чистый способ добавить поле в структурированный массив numpy), см.
Добавление поля в структурированный массив numpy
но у меня есть вопрос о ответе, который там дается...
Если вы используете numpy 1.3, там также numpy.lib.recfunctions.append_fields()
У меня все еще есть numpy 1.3, но он не распознает эту функцию, и я также ничего не нашел в документации по numpy. Что случилось с функцией? Есть ли другая функция, которая может сделать то же самое?
Ответы
Ответ 1
Что касается документации для репараций, здесь это: http://pyopengl.sourceforge.net/pydoc/numpy.lib.recfunctions.html
Вы также можете прочитать этот разговор: http://comments.gmane.org/gmane.comp.python.numeric.general/39537
Если вы не можете понять это после прочтения этих данных, пожалуйста, предоставьте несколько примеров кода (например, вы импортировали numpy.lib.recfunctions?) и сообщение об ошибке или нежелательный результат, поэтому мы можем определить, как исправить он.
Ответ 2
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>
>>>
Ответ 3
Вот конкретный пример использования 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 также может быть "plain" ndarray
без имен столбцов:
y = np.arange(10,20)
или вы можете переименовать столбец y
в нечто другое (даже если y - структурированный массив с именами столбцов):
z = append_fields(x, 'p', y)
(проверено в numpy 1.6.1)