给出一个numpy矩阵my_matrix
。
import numpy as np
my_matrix = np.array([[1.2,2.3,None],[4.5,3.4,9.3]])
如何有效地将其展平为包含my_matrix
的索引位置的以下数组?
[[0,0],[0,1],[0,2],[1,0],[1,1],[1,2]]
答案 0 :(得分:1)
您可以尝试:
rows, cols = my_matrix.shape
[[i, j] for i in range(rows) for j in range(cols)]
输出:
[[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2]]
答案 1 :(得分:0)
您可以使用ReqEntity.build().writeTo(<OutputStream>)
并稍微调整返回的值
numpy.indices()
答案 2 :(得分:0)
您可以使用纯python轻松创建这样的列表:
from itertools import product
list(product(range(my_matrix.shape[0]), range(my_matrix.shape[1])))
结果是
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]
如果您不使用显式列表,而只想遍历索引,则不要使用list(...)
。这将节省内存和计算时间,因为仅在使用索引时会生成索引。
但是,如果要使用结果为numpy数组建立索引,则使用np.ix_
可能更方便:
np.ix_(np.arange(my_matrix.shape[0]), np.arange(my_matrix.shape[1]))
输出为
(array([[0],
[1]]), array([[0, 1, 2]]))