我試圖創建一個包含2個元組元組的numpy數組,其中第一個元素可以是任何東西,第二個元素是一個整數。閱讀numpy文檔我發現numpy.void類型是一種泛型類型。如果我定義我的新類型:瞭解numpy「void」dtype和通用數組
In [1]: import numpy as np
In [2]: dt = np.dtype([('anything', 'V', 1), ('counter', 'i4', 1)])
我可以這樣做:
In [3]: np.array([("hi", 1), ("bye", 1)], dtype=dt)
Out[3]:
array([(<read-write buffer ptr 0x12f9bb0, size 1 at 0x7f03d020f870>, 1),
(<read-write buffer ptr 0x12f9bb5, size 1 at 0x7f03d020f830>, 1)],
dtype=[('anything', 'V1'), ('counter', '<i4')])
但我不能這樣做:
In [4]: np.array([(1, 1), (2, 1)], dtype=dt)
------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-637fcc25185b> in <module>()
----> 1 np.array([(1, 1), (2, 1)], dtype=dt)
TypeError: expected a readable buffer object
有其使用numpy的dtypes通用的元組的方式嗎?
感謝您的回覆。使用numpy而不使用其他通用python結構的原因是因爲需要使用我需要使用的序列化庫。這個序列化過程強加了每個對象都必須映射到numpy.dtype類型的限制。 Dtype O(對象)是一個派生類型,並沒有被提取。我認爲這種情況可能是無法將任何東西映射到numpy.void類型。在接受你的答案之前,我會稍等一下,看看有沒有人提供解決方案。 – MonkeyButter
我已經添加了一個多字節void的示例,並且使用'pickle'來序列化。 – hpaulj