python - 从列索引向量中选择二维数组元素的向量

标签 python arrays numpy

我有一个二维数组 A:

28  39  52
77  80  66   
7   18  24    
9   97  68

以及列索引的向量数组 B:

1   
0   
2    
0

如何以 Python 方式,使用基本 Python 或 Numpy,从 A 中选择与 B 中的列索引不对应的元素?

我应该得到这个二维数组,它包含 A 的元素,不对应于存储在 B 中的列索引:

28  52
80  66   
7   18    
97  68

最佳答案

您可以使用广播和逐行掩码来为每一行选择不包含在数组中的元素:

设置

B = np.array([1, 0, 2, 0])
cols = np.arange(A.shape[1])

现在使用广播创建一个掩码,并索引您的数组。

mask = B[:, None] != cols
A[mask].reshape(-1, 2)

array([[28, 52],
       [80, 66],
       [ 7, 18],
       [97, 68]])

关于python - 从列索引向量中选择二维数组元素的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52571930/

相关文章:

python - 如何使用 wxPython 创建一个信息图标

Python:检查每个用户的唯一类别

arrays - 使用 Tensorflow 中的索引对张量进行切片

python - 循环遍历数组以在python中找到欧氏距离

python - 哪种更好的方式来写出Python的错误

Python lambda函数计算数字的阶乘

javascript - 如果出现平局,如何在 javascript 中返回较小的数字?

ruby - 使用两个数组Ruby构造hash

python - 将Matlab代码转换为Python时的"data type not understood"

pandas - 将大数据帧拆分为较小的相等数据帧