【发布时间】:2020-07-11 08:15:27
【问题描述】:
我正在尝试查看是否有更漂亮的方法可以从另一个对象列表/数组创建(即强制创建)一维 numpy 数组。然而,这些对象可能具有自身可迭代的条目(因此它们可以是列表、元组等,但也可以是更任意的对象)。
所以为了让事情变得非常简单,让我考虑以下场景:
a=[(1,2), (3,4), (3,5)]
b=np.array(a, dtype=object)
b.shape # gives (2,3), but I would like to have (3,1) or (3,)
我想知道是否有一个很好的 pythonic/numpy'ish 方法来强制 b 具有形状 (3,),并且 a 的元素的可迭代结构在 b 中被忽略。现在我这样做:
a=[(1,2), (3,4), (3,5)]
b=np.empty(len(a), dtype=object)
for i,x in enumerate(a):
b[i]=x
b.shape # gives (3,) this is what i want.
这可行,但有点难看。我找不到更好的方法来以更内置于 numpy 的方式执行此操作。有什么想法吗?
(更多上下文:我真正需要做的是以各种方式重新调整b 的尺寸,因此我不希望b 知道其元素的尺寸(如果它们是可迭代的)。
谢谢!
【问题讨论】:
-
numpy 有一个重塑,如果这就是你的要求
-
谢谢,不,这不是我要问的。我只是说上下文的最后一部分,一旦我的数组
b以“正确”的形式出现,稍后重新调整它的形状(即使用np.reshape)。
标签: python arrays numpy loops shapes