У меня есть набор данных, которые я бы хотел обработать numpy. Данные можно рассматривать как набор точек в пространстве с дополнительной переменной свойства, которую я хотел бы обрабатывать как объект. В зависимости от набора данных векторы могут быть длиной 1, 2 или 3, но одинаковой длины для всех точек в заданном наборе данных. Объект свойства - это настраиваемый класс, который может быть одинаковым для любых двух заданных точек.Массив Numpy как вектор с уникальным свойством
Так что рассмотрите эти данные как случайный пример (C и H представляют собой объекты, которые содержат атомные свойства для углерода или водорода ... или просто какой-то случайный объект). Они не будут считываться через файл, а создаваться с помощью алгоритма. Здесь объект C может быть одинаковым или может быть другим (например, изотопом).
Example 3D data set (just abstract representation)
C 1 2 3
C 3 4 5
H 1 1 4
Я хотел бы иметь Numpy массив, содержащий все атомные позиции, так что я могу выполнять NumPy операции, такие как вектор манипуляции и такие, как функция перевода def translate(data,vec):return data + vec
. Я также хотел бы обрабатывать объекты свойств параллельно. Один из вариантов состоял бы в том, чтобы иметь два отдельных массива для обоих, но если я удалю элемент из одного, я должен будет явно удалить значение массива свойств. С этим можно было бы справиться.
Я рассматривал numpy.recarray
x = np.array([(1.0,2,3, "C"), (3.0,2,3, "H")], dtype=[('x', "float64"),('y',"float6
4 "), ('г'," float64"), ('тип', объект)])
Но кажется shape
этого массива является (2,)
, что означает, что каждая запись обрабатывается независимо Кроме того, я не могу понять, как получить вектор манипуляции работать с этим типом:.
def translate(data,vec):return data + vec
translate(x,np.array([1,2,3]))
...
TypeError: unsupported operand type(s) for +: 'numpy.ndarray' and 'numpy.ndarray'
Is numpy.recarray
что я должен использовать? Есть ли лучший способ справиться с этим более простым способом, так что у меня есть отдельная численная матрица точек с параллельным массивом object
, которые связаны в случае удаления элемента (np.delete
)? Я также кратко рассмотрел возможность записи объекта массива, который расширяет ndarray
, но я чувствую, что это может быть ненужным и потенциально катастрофическим.
Любые мысли или предложения были бы очень полезными.
Спасибо! Это именно то, что я искал. Он поскользнулся, и я понял, что вы можете изменить размеры одной из структур. – scicalculator