2 回答

TA贡献1831条经验 获得超4个赞
首先,您需要为数组提供正确的形状,以便numpy了解如何解释提供给append方法的值。
然后,为防止自动展平,请指定要附加的轴。
此代码执行您打算执行的操作:
import numpy as np
items = [(1,2),(3,4)]
new_array = np.ndarray((0,2))
for item in items:
new_array = np.append(new_array, [item], axis=0)
print(new_array) # [[1. 2.]
# [3. 4.]]

TA贡献1845条经验 获得超8个赞
如果您有一个元组列表,并且出于某种原因决定讨厌标准数组构造函数(np.array,np.asarray等,正如@JohnZwinck 指出的那样可能是最好的答案),最有效的方法是预先分配整个数组,然后分配给它:
items = [(1, 2), (3, 4)]
arr = np.empty((len(items), len(items[0])))
arr[...] = items
即使你想要的是随着时间的推移增长的数组,一行接一行,它已被证明通过详细的时机,你通常最好是关闭只是分配一个全新的数组,然后复制了旧值。
因此,鉴于上述情况arr,通过这种方法追加一行的最有效方法是:
newitem = (5, 6)
oldarr = arr
arr = np.empty((oldarr.shape[0] + 1, *oldarr.shape[1:]))
arr[:-1,:] = oldarr
arr[-1,:] = newitem
添加回答
举报