我有一套我想用numpy對待的數據。可以將數據看作空間中的一組點,並使用我想作爲對象處理的附加屬性變量。取決於一組數據,向量可以是長度1,2或3,但對於給定數據集中的所有點而言長度相同。屬性對象是一個自定義類,對於任何兩個給定的點可能都是相同的。作爲一個非唯一屬性的向量的numpy數組
因此,將此數據視爲一個隨機示例(C和H表示包含Carbon或Hydrogen的原子屬性的對象...或僅包含一些隨機對象)。這些不會通過文件讀入,而是通過算法創建。這裏的C對象可以是相同的,也可以是不同的(例如同位素)。
Example 3D data set (just abstract representation)
C 1 2 3
C 3 4 5
H 1 1 4
我想有一個包含所有原子位置的,這樣我可以執行像numpy的矢量操作和如翻譯功能def translate(data,vec):return data + vec
操作的numpy的陣列。我也想平行處理屬性對象。一種選擇是對兩個都有兩個單獨的數組,但是如果我刪除了一個元素,我也必須顯式刪除屬性數組值。這可能難以處理。
我認爲使用numpy.recarray
x = np.array([(1.0,2,3, "C"), (3.0,2,3, "H")], dtype=[('x', "float64"),('y',"float6
4 「),( 'Z',」 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'
是numpy.recarray
我應該用什麼?有沒有更好的方式來處理這個更簡單的方式,這樣我有一個單獨的數值矩陣的點與平行object
陣列鏈接的情況下,一個元素被刪除(np.delete
)?我還簡要地考慮過編寫一個擴展爲ndarray
的數組對象,但我覺得這可能是不必要的,並且可能是災難性的。
任何想法或建議將是非常有益的。
謝謝!這正是我一直在尋找的。它向右滑過我,你可以改變其中一個結構的尺寸。 – scicalculator 2013-03-03 22:49:00