python - 从每列中排除一个值的较小尺寸的新数组

标签 python arrays numpy matrix

在 Python 2.7 中使用 numpy 或通过任何方式,如果我有一个任意大小的数组并想排除某些值并输出新数组,我该怎么做?这是我想要的

[(1,2,3),                                        
 (4,5,6), then exclude [4,2,9] to make the array[(1,5,3),
 (7,8,9)]                                        (7,8,6)]

我总是会排除与行长度相同长度的数据,并且每列总是只有一个条目。 [(1,5,3)] 是我想排除的另一个数据示例。所以每次我循环函数时,它都会将数组行大小减少一个。我想我必须使用掩码数组或将我的掩码转换为掩码数组并减去两者然后可能压缩输出但我不知道如何。谢谢你的时间。

最佳答案

如果将二维数组转换为展开的一维数组,则可以非常高效地完成此操作。然后您重复包含要排除的元素的数组,称为 e 以进行逐元素比较:

import numpy as np
a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])
e = [1, 5, 3]    

ar = a.T.ravel()
er = np.repeat(e, a.shape[0])

ans = ar[er != ar].reshape(a.shape[1], a.shape[0]-1).T

但如果 e 中的每个元素只匹配 a 的一行,它就可以工作。


编辑: 正如@Jaime 所建议的,您可以避免 ravel() 并直接获得相同的结果:

ans = a.T[(a != e).T].reshape(a.shape[1], a.shape[0]-1).T

关于python - 从每列中排除一个值的较小尺寸的新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18893731/

相关文章:

python - 使用泰勒级数加速计算

python - IPC 在单独的 Docker 容器中跨 Python 脚本共享内存

javascript - 将字典转换为保留字典键的数组

python - 有效地评估数组值和索引的函数

python - 在Python中通过jq从API过滤JSON

python - Django pymssql 迁移

java - 如何使用 hasprevious() 方法使用 java 反转单词?

javascript - 使用 JavaScript 中的函数打印从 1(其中 1 是质数)到 n 的质数并将它们附加到数组

python - numpy 中的对称矩阵?

python - 使用 Python 对 2 个数组中包含的向量进行元素级叉积