gpt4 book ai didi

python - 通过使用另一个 numpy 数组作为掩码删除列来压缩 numpy 数组(矩阵)

转载 作者:太空狗 更新时间:2023-10-29 22:20:04 25 4
gpt4 key购买 nike

我有一个 2D numpy 数组(即矩阵)A,其中包含以列向量形式与垃圾交错的有用数据以及“选择”数组 B,对于重要的列包含“1”,对于不重要的列包含 0。有没有一种方法可以只从 A 中选择那些与 B 中的列相对应的列?即我有一个矩阵

A = array([[ 0,  1,  2,  3,  4],   and a vector B = array([ 0,  1,  0,  1,  0])
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])

我要

array([[1,   3],
[6, 8],
[11, 13],
[16, 18],
[21, 23]])

有没有一种优雅的方式来做到这一点?现在我只有一个遍历 B 的 for 循环。

注意:我正在处理的矩阵很大,所以我不想使用 numpy 掩码数组,因为我根本不需要掩码数据

最佳答案

>>> A
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
>>> B = NP.array([ 0, 1, 0, 1, 0])

>>> # convert the indexing array to a boolean array
>>> B = NP.array(B, dtype=bool)

>>> # index A against B--indexing array is placed after the ',' because
>>> # you are selecting columns

>>> res = A[:,B]

>>> res
array([[ 1, 3],
[ 6, 8],
[11, 13],
[16, 18],
[21, 23]])


NumPy 中基于索引的切片语法优雅而简单。一些规则涵盖了大多数用例:

  • 形式是[行,列]

  • 使用冒号“:”指定所有行或所有列,例如,[:, 4](提取整个第 5 列)

关于python - 通过使用另一个 numpy 数组作为掩码删除列来压缩 numpy 数组(矩阵),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8453501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com