为了账号安全,请及时绑定邮箱和手机立即绑定

在循环中向矩阵添加列

在循环中向矩阵添加列

温温酱 2021-10-19 14:43:24
当条件变为真时,我试图在循环中将一个矩阵中的选择性列添加到另一个矩阵。我尝试了各种组合,但它使用 np.append 等命令在行中添加,任何帮助表示赞赏。谢谢我尝试过 np.append、np.concatenation、np.hstack 命令,但没有得到所需的解决方案。n,m=np.shape(K)Z=np.array([])for number in range(m):    A=function    if A<0.05:        Z = np.append(Z,np.vstack(K[:,number]))我想要具有满足条件 A 的 K 列的 Z 矩阵。像 Z=[K[:,3] K[:,8] K[:,10]]
查看完整描述

2 回答

?
宝慕林4294392

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 比较快,而且使用简单。


查看完整回答
反对 回复 2021-10-19
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

Numpy 实际上是用于快速/稳健的矩阵运算,例如乘法、加法等。


因为,您正在处理排序行/列表的结构和操作。我强烈建议您使用Pandas Dataframe


您可以根据条件轻松添加列甚至合并两个矩阵(是的,例如 sql 连接)。


看看df.assign


df = pd.Dataframe(npArray)

df.assign('newcolumn', yourNewColumnValuesAsList)


查看完整回答
反对 回复 2021-10-19
  • 2 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信