我想根据下面的代码,使用现有矩阵中的列一次一列地构建一些矩阵。
# 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_pos
和x_neg
,以便每个x[i]
按列添加?我尝试如下,每次追加将x_pos
变成一维数组。
x_pos = np.empty((0,x.shape[1]))
我对python很新,可能会遗漏一些明显的东西。
答案 0 :(得分:3)
你以错误的方式解决这个问题。在numpy中以矢量化的方式做这些事情几乎总是更好。
首先,构建索引数组y_pos_actual
。然后,只需做
x_pos = x[:, y_pos_actual]
这将选择索引y_pos_actual
给出的所有列到新矩阵x_pos
中。您可以使用
x_pos = x[y_pos_actual, :]