python-3.x - 从 2D 列表中选择列具有所需值的所有行
问题描述
我有一个 MxN 元素的 2D 列表。我想要所有那些列 j 具有特定值的行。我的想法是:
my_2D_list = np.transpose(np.array(my_2D_list))
temp = my_2D_list[my_2D_list[j] == myvalue]
但 temp 是空的。如果我打印 my_2D_list 我可以看到数组被转置,但它就像:
[['0' '0' '0' ... '0' '0' '0']
['0' '0' '1' ... '75' '80' '80']
['60' '60' '0' ... '10' '108' '108'] ...
没有列之间的逗号,所以我猜它不是在新矩阵的列中拆分每一行,而是一种连续体......我该如何解决这个问题?
解决方案
要从矩阵中的列中选择值,您必须这样做:
list[row_idx, col_idx]
其中索引的第一个参数是行索引,第二个参数是列索引。您可以在此处查看文档。
在你的情况下,这看起来像这样my_2D_list[:, j]
:这是一个完整的示例供您检查:
j = 2
n = 1
np.random.seed(42)
my_2D_list = np.random.randint(0, 3, 100).reshape((10, 10))
print(">>> Whole matrix\n%s" % my_2D_list)
print("\n>>> Column %d\n%s" % (j, my_2D_list[:,j]))
print("\n>>> Rows where column %d == %d \n%s" % (j, n, my_2D_list[my_2D_list[:,j] == n]))
输出:
>>> Whole matrix
[[2 0 2 2 0 0 2 1 2 2]
[2 2 0 2 1 0 1 1 1 1]
[0 0 1 1 0 0 0 2 2 2]
[1 2 1 1 2 1 2 2 0 2]
[0 2 2 0 0 2 1 0 1 1]
[1 0 1 0 1 2 2 0 2 2]
[1 0 1 1 1 1 1 1 1 0]
[2 1 1 1 1 1 1 2 2 1]
[2 0 1 0 0 1 2 0 1 0]
[0 0 0 2 0 0 0 2 0 0]]
>>> Column 2
[2 0 1 1 2 1 1 1 1 0]
>>> Rows where column 2 == 1
[[0 0 1 1 0 0 0 2 2 2]
[1 2 1 1 2 1 2 2 0 2]
[1 0 1 0 1 2 2 0 2 2]
[1 0 1 1 1 1 1 1 1 0]
[2 1 1 1 1 1 1 2 2 1]
[2 0 1 0 0 1 2 0 1 0]]
推荐阅读
- javascript - 在javascript中交换对象内的键
- oracle - Oracle 变异表
- angular - 如何部署支持 ssl 的 Angular 应用程序
- jquery - 更改 Span 内的文本 - DNN 模块
- mongodb - MongoDB设计推测
- javascript - 使用 jQuery PanZoom 拖动 2 页图像
- javascript - 如何从html画布上的tileset工作表多次绘制特定的tileset而不是整个图像
- three.js - ID Buffer 3 JS WEBGL 非真实感渲染边缘检测
- swift - 通过 TableViewCell 转换到 ViewController
- perl - 错误:引用键的参数类型必须是 unblessed