ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-列出comprehension或map()或for循环,用于访问上一行以操纵数组

2019-11-20 02:55:43  阅读:280  来源: 互联网

标签:loops arrays python numpy list-comprehension


假设我有一个array(numpy array)A = [[1、2、3],[0、0、0],[0、0、0]],我想将零行处理为[2、3, 1],[3、1、2],因此最终数组为A = [[1、2、3],[2、3、1],[3、1、2]]

我可以通过如下所示的for循环来做到这一点:

a = np.array([[1, 2, 3],[0, 0, 0],[0, 0, 0]])
for i in xrange(1,3):
    a[i]=np.concatenate([a[i-1][1:], a[i-1][:1]], axis=1)

转到上一行,将[1:]和[:1]连接起来,将结果分配为下一行.

我有许多这样的循环,我想知道是否可以摆脱for循环,从而提高速度(也许吗?).有什么办法可以使用列表推导或映射吗?我的A数组不必是nxn且行数为零,除了第一个,它可以只是A = [1,2,3,…,n],如果有一种方法可以使用A创建nx3数组作为开始,请继续使用上一行并将其[m:]和[:m]串联在一起. (任意米)

是的,也许for循环是执行此操作的唯一/正确方法.我想知道是否.

解决方法:

for循环是最简单的方法,列表理解或映射不会获得太大的速度.但是您可以使用roll代替串联:

a = numpy.array([1, 2, 3])
a = numpy.vstack([numpy.roll(a, -i) for i in xrange(3)])

标签:loops,arrays,python,numpy,list-comprehension
来源: https://codeday.me/bug/20191120/2041048.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有