从元组列表构建numpy数组

时间:2018-11-11 03:29:49

标签: python numpy

我想将元组列表转换为numpy数组。例如:

items = [(1, 2), (3, 4)]

使用np.asarray(items)我得到:

array([[1, 2],
       [3, 4]])

但是如果我尝试单独添加这些项目:

new_array = np.empty(0)
for item in items:
    new_array = np.append(new_array, item)

new_array失去了原始形状,变为:

array([1., 2., 3., 4.])

我可以使用new_array.reshape(2, 2)将其调整为想要的形状:

array([[1., 2.],
       [3., 4.]])

但是我如何在不重新塑形的情况下得到那种形状?

2 个答案:

答案 0 :(得分:1)

首先,您需要为数组提供正确的形状,以便BehaviorSubject能够理解如何解释提供给numpy方法的值。

然后,为防止自动展平,请指定要附加的轴。

此代码可以完成您打算做的事情

append

答案 1 :(得分:1)

如果您有一个元组列表,并且已经决定讨厌标准数组构造函数({@ {1}},np.array等,如@JohnZwinck所指出的那样,则可能是最佳答案)由于某种原因,最有效的方法是预分配整个数组,然后分配给它:

np.asarray

即使您想要的是随着时间的推移逐行增加数组,也可以has been shown通过详细的时间安排,通常最好分配一个新的数组,然后在旧的数组上进行复制价值观。

因此,鉴于以上items = [(1, 2), (3, 4)] arr = np.empty((len(items), len(items[0]))) arr[...] = items ,通过这种方法,最有效的添加行的方法是:

arr