Làm thế nào sẽ một (hiệu quả) thực hiện như sau:NumPy cuộn dọc trong mảng 2ngày
x = np.arange(49)
x2 = np.reshape(x, (7,7))
x2
array([[ 0, 1, 2, 3, 4, 5, 6],
[ 7, 8, 9, 10, 11, 12, 13],
[14, 15, 16, 17, 18, 19, 20],
[21, 22, 23, 24, 25, 26, 27],
[28, 29, 30, 31, 32, 33, 34],
[35, 36, 37, 38, 39, 40, 41],
[42, 43, 44, 45, 46, 47, 48]])
Từ đây tôi muốn để cuộn một vài điều. Tôi muốn cuộn 0,7,14,21 v.v. vì vậy 14 đến đầu trang. Sau đó, tương tự với 4,11,18,25 v.v. vì vậy 39 đến đầu trang.
quả nên là:
x2
array([[14, 1, 2, 3, 39, 5, 6],
[21, 8, 9, 10, 46, 12, 13],
[28, 15, 16, 17, 4, 19, 20],
[35, 22, 23, 24, 11, 26, 27],
[42, 29, 30, 31, 18, 33, 34],
[ 0, 36, 37, 38, 25, 40, 41],
[ 7, 43, 44, 45, 32, 47, 48]])
Tôi nhìn lên numpy.roll, ở đây và google nhưng không thể tìm thấy như thế nào ai có thể làm điều này.
Đối với cuộn ngang, tôi có thể làm:
np.roll(x2[0], 3, axis=0)
x3
array([4, 5, 6, 0, 1, 2, 3])
Nhưng làm thế nào để trả lại mảng đầy đủ với sự thay đổi cuộn này như một bản sao mới?