Python 如何将numpy矩阵的列移到最后一列?
假设我有一个numpy矩阵:Python 如何将numpy矩阵的列移到最后一列?,python,numpy,matrix,Python,Numpy,Matrix,假设我有一个numpy矩阵: [[1, 3, 4, 7, 8] [5, 6, 8, 2, 6] [2, 9, 3, 3, 6] [7, 1, 9, 3, 5]] 我想将矩阵的第2列移到最后一列: [[1, 4, 7, 8, 3] [5, 8, 2, 6, 6] [2, 3, 3, 6, 9] [7, 9, 3, 5, 1]] 具体如何操作?创建列列表,然后使用该列表为数组编制索引。这里,new\u column\u order使用一个范围获取col之前的所有列,另一个范围获取co
[[1, 3, 4, 7, 8]
[5, 6, 8, 2, 6]
[2, 9, 3, 3, 6]
[7, 1, 9, 3, 5]]
我想将矩阵的第2列移到最后一列:
[[1, 4, 7, 8, 3]
[5, 8, 2, 6, 6]
[2, 3, 3, 6, 9]
[7, 9, 3, 5, 1]]
具体如何操作?创建列列表,然后使用该列表为数组编制索引。这里,
new\u column\u order
使用一个范围获取col
之前的所有列,另一个范围获取col
之后的所有列,然后将col
放在末尾。通过*
将每个范围对象解压缩到新列列表中
x = np.array([[1, 3, 4, 7, 8],
[5, 6, 8, 2, 6],
[2, 9, 3, 3, 6],
[7, 1, 9, 3, 5]])
col = 1 # 2nd column
new_column_order = [*range(col), *range(col + 1, x.shape[-1]), col]
x_new = x[:, new_column_order]
print(x_new)
输出:
[[1 4 7 8 3]
[5 8 2 6 6]
[2 3 3 6 9]
[7 9 3 5 1]]
使用
numpy.roll
:
arr[:, 1:] = np.roll(arr[:, 1:], -1, 1)
输出:
array([[1, 4, 7, 8, 3],
[5, 8, 2, 6, 6],
[2, 3, 3, 6, 9],
[7, 9, 3, 5, 1]])
如何:
np.roll
接受三个参数:a
、shift
和轴
:
np.roll(a = arr[:, 1:], shift = -1, axis = 1)
这意味着,取arr[:,1:://code>(所有行,1中的所有列),沿轴1向左移动一个单位(-1。向右移动将为+1)(即,列移动,轴0将为行移动)
np.roll
,顾名思义,是一种循环移位。一个单位的班次将使最后一列成为第一列,依此类推。Woah。我是python新手。你介意解释一下x_新线在做什么吗?谢谢@VickConan I稍微修改了示例代码并添加了一些散文。让我知道我是否可以帮助澄清任何更好的。太好了!非常感谢。嗨,克里斯,我是python新手。你介意解释一下那条线在干什么吗?谢谢。@VickConan请看一下更新的How部分:)