我有一个NxM数组,以及我想用来对数组进行切片的列索引集的任意列表.例如,3x 3数组
my_arr = np.array([[1, 2, 3], [1, 2, 3], [1, 2, 3]])
和指数集
my_idxs = [[0, 1], [2]]
我想使用索引对从数组中 Select 相应的列,并使用np.linalg.norm()
获得(行方向)载体的长度.我想对所有索引对这样做.给定上述数组和索引集列表,这应该给出:
[[2.23606797749979, 3],
[2.23606797749979, 3],
[2.23606797749979, 3]]
当所有集的索引数量相同时(例如,使用my_idxs = [[0, 1], [1, 2]]
,我可以简单地使用np.linalg.norm(my_arr[:, my_idxs], axis=1)
:
[[2.23606797749979, 3.605551275463989],
[2.23606797749979, 3.605551275463989],
[2.23606797749979, 3.605551275463989]]
然而,当它们不是(就像my_idxs = [[0, 1], [2]]
的情况一样)时,不同的索引列表长度在切片时会产生错误,因为索引集数组的形状不规则.有没有什么方法可以实现单行选项,而无需循环索引集列表并分别处理每个索引集?