python - 使用 numpy 的 Python 矩阵交换列
问题描述
这是我试图交换列的 Y 矩阵(使列 [1,2,3,4,5] 代替 [5,4,3,2,1])但是,这改变了数字的准确性
这是Y
> array([[ 0.0e+00, 1.0e-15, 0.0e+00, 0.0e+00, 0.0e+00],
> [ 1.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00],
> [-1.0e-02, 1.2e-02, 0.0e+00, 0.0e+00, 0.0e+00],
> [ 1.0e-02, -1.0e-02, 1.0e+00, 0.0e+00, 0.0e+00]])
这是代码
y1, y2= np.shape(Y)
y2= y2-2
for row in range (y1):
for column in range (y2):
Z[row, column]=Y[row, y2-column+1]
这是Z
array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 1., 0., 0.]])
我怎样才能使它具有相同的精度?
解决方案
不要在这里循环,只需使用np.flip
x = np.array([[ 0.0e+00, 1.0e-15, 0.0e+00, 0.0e+00, 0.0e+00],
[ 1.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00],
[-1.0e-02, 1.2e-02, 0.0e+00, 0.0e+00, 0.0e+00],
[ 1.0e-02, -1.0e-02, 1.0e+00, 0.0e+00, 0.0e+00]])
np.flip(x, axis=1)
array([[ 0.0e+00, 0.0e+00, 0.0e+00, 1.0e-15, 0.0e+00],
[ 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 1.0e+00],
[ 0.0e+00, 0.0e+00, 0.0e+00, 1.2e-02, -1.0e-02],
[ 0.0e+00, 0.0e+00, 1.0e+00, -1.0e-02, 1.0e-02]])
如果您有不同的顺序,例如:4, 3, 5, 2, 1
,您可以使用高级索引:
x[:, [3, 2, 4, 1, 0]]
array([[ 0.0e+00, 0.0e+00, 0.0e+00, 1.0e-15, 0.0e+00],
[ 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 1.0e+00],
[ 0.0e+00, 0.0e+00, 0.0e+00, 1.2e-02, -1.0e-02],
[ 0.0e+00, 1.0e+00, 0.0e+00, -1.0e-02, 1.0e-02]])
推荐阅读
- java - 监视具有事务方法的服务弹簧
- r - 用户输入功能
- android - 如何在博览会中更新语言包?
- html - 正则表达式:检查字符串是否有 1 到 6 个数字,以及正好 4 个特殊字符
- generics - 为什么 Kotlin 的 Type 的 vararg 被视为 Array
而不是数组 - javascript - Javascript 对象:查找值为空的第一个嵌套对象
- ruby-on-rails - ActiveStorage - 上传到 GoogleCloudStorage 返回 500 后端错误
- arrays - V-lang 显示 V panic: array index out of range error for valid indexing of array after V panic 一次
- postgresql - Postgres 用户无法从公共表中选择
- python - 在 Python 中使用 Nifi ExecuteScript 将附件上传到 Confluence