【发布时间】:2021-04-28 04:58:05
【问题描述】:
我想创建一个 numpy 对象数组,其中对象是其他 numpy 数组具有不同或精确的尺寸。目的是在处理嵌套数组可能具有不同大小的数组时进行高级索引。
如果所有嵌套数组的维度不同,则一切正常:
a = np.array([np.array([0, 1], dtype=int), np.array([0, 1, 2], dtype=int)], dtype=object)
print(a[0].dtype, a[1].dtype)
在这种情况下,所有嵌套数组的 dtype 都等于 'int64'。
但是当嵌套数组具有相同的维度时,嵌套数组也成为对象数组:
a = np.array([np.array([0, 1, 2], dtype=int), np.array([3, 4, 5], dtype=int)], dtype=object)
print(a[0].dtype, a[1].dtype)
在这种情况下,所有嵌套数组的 dtype 都等于 'object'。
列表中的单个数组转换为对象数组的情况相同:
a = np.array([np.array([0, 1, 2], dtype=int)], dtype=object)
print(a[0].dtype)
问题是:创建对象数组的正确方法是什么,其中每个对象都是具有不同维度的 NumPy 数组以具有 dtype=int 的嵌套数组?
【问题讨论】: