我想将元组列表转换为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.]])
但是我如何在不重新塑形的情况下得到那种形状?
答案 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