眼眸繁星
取转数的函数In [5]: aOut[5]:array([[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]])In [14]: def rotate(n):...: n = n%len(a)...: return np.concatenate([a[n:], a[:n]])In [13]: rotate(2)Out[13]:array([[ 9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20], [ 1, 2, 3, 4], [ 5, 6, 7, 8]])如果你给出的n长度超过数组的长度怎么办?处理好了——n = n%len(a)In [16]: rotate(9)Out[16]:array([[17, 18, 19, 20], [ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12], [13, 14, 15, 16]])注释中给出的另一种解决方案是roll()method。In [6]: aOut[6]:array([[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]])In [7]: def rotate(n): ...: n = n % len(a) ...: return np.roll(a,-n,axis=0) ...:In [8]: rotate(8)Out[8]:array([[13, 14, 15, 16], [17, 18, 19, 20], [ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12]])In [9]: rotate(2)Out[9]:array([[ 9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20], [ 1, 2, 3, 4], [ 5, 6, 7, 8]])
泛舟湖上清波郎朗
如果您使用这行简单的代码,这将非常容易。不需要功能和其他东西。只需使用numpy.roll. 请参阅此处的解释# Assume your matrix is named a.>>> aarray([[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]])>>> np.roll(a,-(n % len(a)),axis=0)array([[ 9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20], [ 1, 2, 3, 4], [ 5, 6, 7, 8]])