编写一个 Python 程序,将 Numpy 数组右旋 n 次或 n 个位置。在此示例中,我们使用负数从右侧切片数组,以实现右旋,并使用 numpy 的 concatenate 方法组合了两个切片。
import numpy as np
rtArray = np.array([10, 15, 25, 35, 67, 89, 97, 122, 175])
rtRotate = int(input("Enter Position to Right Rotate Array Elements = "))
print('Original Array Elements Before Right Rotating')
print(rtArray)
arr = np.concatenate((rtArray[-rtRotate:], rtArray[:-rtRotate]), axis = 0)
print('\nFinal Array Elements After Right Rotating')
print(arr)

此程序使用嵌套的 for 循环,将 Numpy 数组项按用户给定的数字 n 或位置右旋。
import numpy as np
rtArray = np.array([4, 6, 8, 11, 15, 29, 44, 77, 99])
rtRotate = int(input("Enter Position to Right Rotate Array Elements = "))
print('Original Array Elements Before Right Rotating')
print(rtArray)
length = rtArray.size - 1
for i in range(rtRotate):
lastValue = rtArray[length]
for j in range(length, -1, -1):
rtArray[j] = rtArray[j - 1]
rtArray[0] = lastValue
print('\nFinal Array Elements After Right Rotating')
print(rtArray)
Enter Position to Right Rotate Array Elements = 4
Original Array Elements Before Right Rotating
[ 4 6 8 11 15 29 44 77 99]
Final Array Elements After Right Rotating
[29 44 77 99 4 6 8 11 15]
在这个Python 示例中,RightRotateArray 函数将向右侧旋转数组项,printRightArrayItems 函数打印 numpy 数组项。
import numpy as np
def printRightArrayItems(rtArray):
for i in rtArray:
print(i, end = ' ')
def RightRotateArray(rtArray, rtRotate):
length = rtArray.size - 1
for i in range(rtRotate):
lastValue = rtArray[length]
for j in range(length, -1, -1):
rtArray[j] = rtArray[j - 1]
rtArray[0] = lastValue
rtArray = np.random.randint(11, 110, size = 10)
rtRotate = int(input("\nEnter Position to Right Rotate Array Elements = "))
print('Original Array Elements Before Right Rotating')
printRightArrayItems(rtArray)
RightRotateArray(rtArray, rtRotate)
print('\nFinal Array Elements After Right Rotating')
printRightArrayItems(rtArray)
Enter Position to Right Rotate Array Elements = 3
Original Array Elements Before Right Rotating
16 63 31 106 18 51 61 35 106 72
Final Array Elements After Right Rotating
35 106 72 16 63 31 106 18 51 61
下面显示的程序将使用 while 循环将 Numpy 数组右旋 n 次。
import numpy as np
def printRightArrayItems(rtArray):
i = 0
while i < len(rtArray):
print(rtArray[i], end = ' ')
i = i + 1
def RightRotateArray(rtArray, rtRotate):
length = rtArray.size - 1
i = 0
while(i < rtRotate):
lastValue = rtArray[length]
j = length
while(j >= 0):
rtArray[j] = rtArray[j - 1]
j = j - 1
rtArray[0] = lastValue
i = i + 1
rtArray = np.random.randint(90, 350, size = 15)
rtRotate = int(input("\nEnter Position to Right Rotate Array Elements = "))
print('Original Array Elements Before Right Rotating')
printRightArrayItems(rtArray)
RightRotateArray(rtArray, rtRotate)
print('\nFinal Array Elements After Right Rotating')
printRightArrayItems(rtArray)
Enter Position to Right Rotate Array Elements = 5
Original Array Elements Before Right Rotating
291 249 100 283 189 101 341 333 316 344 285 291 234 336 211
Final Array Elements After Right Rotating
285 291 234 336 211 291 249 100 283 189 101 341 333 316 344