numpy中的array交换任意两行数据

比如a = np.array([[1,2,3],[2,3,4],[1,6,5], [9,3,4]]),想要交换第二行和第三行,看起来很简单,直接写代码:

import numpy as np

a = np.array([[1,2,3],[2,3,4],[1,6,5], [9,3,4]])
tmp = a[1]
a[1] = a[2]
a[2] = tmp

运行结果却为:

array([[1, 2, 3],
       [1, 6, 5],
       [1, 6, 5],
       [9, 3, 4]])

原因是因为tmp = a[1]并非a[1]的一个copy,而是一个“别名”,那么我们改写成:

import numpy as np

a = np.array([[1,2,3],[2,3,4],[1,6,5], [9,3,4]])
tmp = np.copy(a[1])
a[1] = a[2]
a[2] = tmp

运行结果为:

array([[1, 2, 3],
       [1, 6, 5],
       [2, 3, 4],
       [9, 3, 4]])

结果正常,那还有没有更简单的方法呢,例如swap之类的,经查阅找到一种最简单的方法:

import numpy as np

a = np.array([[1,2,3],[2,3,4],[1,6,5], [9,3,4]])
a[[1,2], :] = a[[2,1], :]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,397评论 0 6
  • Numpy是Python的第第三方模块,用于科学计算。 1.属性 列表转化为数组: 2. array的创建 指定数...
    井底蛙蛙呱呱呱阅读 3,408评论 0 10
  • import numpy as np 创建ndarray data1 = [6,7.5, 8, 0, 1]arr1...
    陆文斌阅读 728评论 0 1
  • 2016-1-10 岁末年终之际,人会生出很多感想,来总结来回味,以扬长避短促进来年进步,更好更快的成长和发展。 ...
    可比克克阅读 395评论 0 0