Numpy: 选择矩阵每一列特定行的值

我有一个二维矩阵 X = ((a11, a12, .. a1n), (a21 .. a2n) .. (am1, .. amn)) 和一个一维向量 y = [y1, ..., yn],每个 yi 都在 1m 之间。对于 X 的每一列 i,我想选出第 yi 行的元素。也就是说,我想选出向量 z = (a_(y1 1), ... a_(yn n))

有没有一种向量化的方法来实现这个操作?


回答:

这样做如何:

In [39]: x = np.arange(12).reshape(4,3)In [40]: y = np.array([0,3,2])In [41]: x[y[None, :], np.arange(len(y))[None,:]][0]Out[41]: array([ 0, 10,  8])In [42]: xOut[42]: array([[ 0,  1,  2],       [ 3,  4,  5],       [ 6,  7,  8],       [ 9, 10, 11]])

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注