如何一次构建一个矩阵列

时间:2015-05-04 01:35:03

标签: python numpy matrix

我想根据下面的代码,使用现有矩阵中的列一次一列地构建一些矩阵。

# x is an existing matrix, y is an array, pos_classes is a set

for i in range(len(y)):
    if y[i] in pos_classes:
        x_pos = np.append(x_pos, x[i])
        y_pos_actual = np.append(y_pos_actual, y[i])
    else:
        x_neg =  np.append(x_neg, x[i])
        y_neg_actual = np.append(y_neg_actual, y[i])

我的问题是,我应该初始化x_posx_neg,以便每个x[i]按列添加?我尝试如下,每次追加将x_pos变成一维数组。

x_pos = np.empty((0,x.shape[1]))

我对python很新,可能会遗漏一些明显的东西。

1 个答案:

答案 0 :(得分:3)

你以错误的方式解决这个问题。在numpy中以矢量化的方式做这些事情几乎总是更好。

首先,构建索引数组y_pos_actual。然后,只需做

x_pos = x[:, y_pos_actual]

这将选择索引y_pos_actual给出的所有列到新矩阵x_pos中。您可以使用

执行相同的行
x_pos = x[y_pos_actual, :]