2 回答
TA贡献2021条经验 获得超8个赞
In [21]: Z=np.array([])
In [22]: Z.shape
Out[22]: (0,)
您希望如何向具有这种形状的数组添加内容?
np.append确实有效,但只是因为如果首先确定Z至少是 1d,那就是它破坏了它。
In [23]: np.append(Z,np.arange(10))
Out[23]: array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
我们需要在 中使用某种大粗体字母numpy,表示不要尝试在循环中追加(或连接或堆叠)数组。
您是否尝试构建一个列列表,然后只使用一个连接?
alist = []
for i in [3,8,10]:
alist.append(K[:,[i]])
print(alist)
Z = np.concatenate(alist, axis=1)
# Z=[K[:,3] K[:,8] K[:,10]]
或者
alist = []
alist.append(3); alist.append(8); alist.append(10)
Z = K[:,alist]
重复拼接数组有两个大问题——速度慢,而且很难上手。该 (0,) 形状数组是空列表的有效替代品。
如果您需要迭代地做事情,请考虑列表。list append 比较快,而且使用简单。
TA贡献1860条经验 获得超9个赞
Numpy 实际上是用于快速/稳健的矩阵运算,例如乘法、加法等。
因为,您正在处理排序行/列表的结构和操作。我强烈建议您使用Pandas Dataframe
您可以根据条件轻松添加列甚至合并两个矩阵(是的,例如 sql 连接)。
看看df.assign
df = pd.Dataframe(npArray)
df.assign('newcolumn', yourNewColumnValuesAsList)
添加回答
举报