python - 使用numpy中的一维数组从二维数组中选择多个元素

标签 python arrays numpy

我在 numpy 中有两个数组。第一个是二维数组,可以将其视为向量列表。第二个是一维数组,可以将其视为二维数组的索引列表。

我想使用一维数组的索引选择二维数组的元素。现在我一直在做

        z=rnd.rand(2,10) # a list of 2d vectors of length 10
        z_idx=rnd.randint(2,size=z.shape[1]) #indices selecting a dimension of the 2d vector

        result=np.array([z[z_idx[i],i] for i in xrange(len(z_idx))])

但这很慢。

在 numpy 中有更好的方法吗?

最佳答案

可能是最简单的方法:

result = z[z_idx].diagonal()

也许使用 arange 会更有效率:

result = z[z_idx, np.arange(z_idx.size)]

更合适但等效的是np.indices:

result = z[z_idx, np.indices(z_idx.shape)[0]]

关于python - 使用numpy中的一维数组从二维数组中选择多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12216191/

相关文章:

python - joblib 中的 batch_size 和 pre_dispatch 到底是什么意思

python - Eclipse 错误 "warning"没有消失

ios - 将数据传递到另一个 View 时添加到数组的问题

python - 如何通过在 numpy 中广播来防止添加两个数组?

Python:将 Numpy 数组写入具有浮点精度的文件

python - ModuleNotFoundError : No module named 'gin'

python - 如何将最长的子字节解码为str?

arrays - 如果我将一个 char 数组初始化为零/{0},我是否必须以 null 终止?

javascript - 我的对象在数组中被覆盖

python - 使用python将数字列表压缩为唯一的非重叠时间范围