展开 numpy 矩阵
Expand numpy matrix
我正在尝试以某种方式扩展 numpy 矩阵,通常看起来像:
import numpy as np
mtx = np.matrix([[['a','b','c'], ['x'], 3], [['d','e','f'], ['y'], 2],
[['g','h','i'], ['z'], 1]])
mtx
# matrix([[['a', 'b', 'c'], ['x'], 3],
# [['d', 'e', 'f'], ['y'], 2],
# [['g', 'h', 'i'], ['z'], 1]], dtype=object)
最后一列包含结果矩阵的实例数,它应该如下所示:
# matrix([[['a', 'b', 'c'], ['x']],
# [['a', 'b', 'c'], ['x']],
# [['a', 'b', 'c'], ['x']],
# [['d', 'e', 'f'], ['y']],
# [['d', 'e', 'f'], ['y']],
# [['g', 'h', 'i'], ['z']]], dtype=object)
因此,第 1 行 3 次,第 2 行 2 次,依此类推
我想知道什么是最快的 and/or 最优雅的 python 方式?
非常感谢!下午
您可以使用np.repeat
重复每一行的前两列mtx[:,:2]
第三列相应行给出的次数arr[:,2]
:
>>> arr = np.asarray(mtx)
>>> np.repeat(arr[:,:2], arr[:,2].astype(int), axis=0)
array([[['a', 'b', 'c'], ['x']],
[['a', 'b', 'c'], ['x']],
[['a', 'b', 'c'], ['x']],
[['d', 'e', 'f'], ['y']],
[['d', 'e', 'f'], ['y']],
[['g', 'h', 'i'], ['z']]], dtype=object)
第三列需要首先转换为整数值(例如使用astype(int)
)。我还发现有必要将 mtx
视为 array
以使其工作:您可以使用 np.matrix
.[=20= 轻松地将其再次转换回 matrix
对象]
我正在尝试以某种方式扩展 numpy 矩阵,通常看起来像:
import numpy as np
mtx = np.matrix([[['a','b','c'], ['x'], 3], [['d','e','f'], ['y'], 2],
[['g','h','i'], ['z'], 1]])
mtx
# matrix([[['a', 'b', 'c'], ['x'], 3],
# [['d', 'e', 'f'], ['y'], 2],
# [['g', 'h', 'i'], ['z'], 1]], dtype=object)
最后一列包含结果矩阵的实例数,它应该如下所示:
# matrix([[['a', 'b', 'c'], ['x']],
# [['a', 'b', 'c'], ['x']],
# [['a', 'b', 'c'], ['x']],
# [['d', 'e', 'f'], ['y']],
# [['d', 'e', 'f'], ['y']],
# [['g', 'h', 'i'], ['z']]], dtype=object)
因此,第 1 行 3 次,第 2 行 2 次,依此类推
我想知道什么是最快的 and/or 最优雅的 python 方式?
非常感谢!下午
您可以使用np.repeat
重复每一行的前两列mtx[:,:2]
第三列相应行给出的次数arr[:,2]
:
>>> arr = np.asarray(mtx)
>>> np.repeat(arr[:,:2], arr[:,2].astype(int), axis=0)
array([[['a', 'b', 'c'], ['x']],
[['a', 'b', 'c'], ['x']],
[['a', 'b', 'c'], ['x']],
[['d', 'e', 'f'], ['y']],
[['d', 'e', 'f'], ['y']],
[['g', 'h', 'i'], ['z']]], dtype=object)
第三列需要首先转换为整数值(例如使用astype(int)
)。我还发现有必要将 mtx
视为 array
以使其工作:您可以使用 np.matrix
.[=20= 轻松地将其再次转换回 matrix
对象]