python - 如果存在特定值,则从偶数列中删除行

标签 python arrays numpy indexing

我有一个形状为 numpy 的数组

(500,12) 

我想做的就是检查偶数列是否具有正值,例如。 值 > 0。在那种情况下,我想删除数组中的整行。 我提出这个:

a = a[a[:,1] < 0, :]

这会消除所需的行,但会查看第二列。我希望它也检查第 4 列、第 6 列、第 8 列等。

有没有办法使用我上面的方法来做到这一点?

最佳答案

如果你正在处理 NumPy 数组,那么你可以使用 fancy indexing方法(用整数数组序列索引数组)如下所示:

mask = (a[:, np.arange(1, a.shape[1], 2)] < 0).all(axis=1)
out = a[mask]

解释:

选择要比较值的奇数列的位置:

np.arange(1, a.shape[1], 2)         # a.shape[1] gives the number of columns
# array([ 1,  3,  5,  7,  9, 11])

接下来,我们根据这些索引对数组进行子集化,并通过提供 axis=1 来查看这些列下的值是否小于零,这会执行逐列检查并返回包含减少数字的数组删除剩余行后的行数。

关于python - 如果存在特定值,则从偶数列中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42483979/

相关文章:

python - 将高斯积分函数拟合到数据

python 2.7 : test if characters in a string are all Chinese characters

python - 从 tricontourf 去除轮廓周围的白色痕迹

c - Nativeint Bigarray 似乎未签名

python - numpy.concatenate 与奇怪的 (3,) 形状的数组?

python - 将 1D numpy 数组展开并复制到 3D

python - DefaultRouter 类没有为 python 中的所有应用程序创建 API Root View

python - 从 json 使用 unixtime 从视频创建多个子剪辑?

javascript - PokeAPI : get complex evolution chain from JSON making it flatten

c - 尝试声明大数组时出现段错误和核心转储