如何将二维数组的特定部分从左到右向上或向下移动?
how to move specific part of a 2d array to either left right up or down?
我知道您可以使用 NumPy 移动数组,因此如果您使用 np.roll,您可以将数组向右或向左移动。我想知道如何将数组中的一组特定值从左到右向上或向下移动。
例如
如果我想将红色圆圈中的内容向左移动,我怎么才能只移动它而不是其他内容?
numpy
可以使用 slice
获取子数组,然后在不同的地方分配它
import numpy as np
x = [
[0, 1, 2, 1, 0, 0, 1, 2, 1, 0 ],
[0, 1, 2, 1, 0, 0, 1, 2, 1, 0 ]
]
arr = np.array(x)
print(arr)
subarr = arr[0:2,1:4] # get values
print(subarr)
arr[0:2,0:3] = subarr # put in new place
print(arr)
结果:
[[0 1 2 1 0 0 1 2 1 0]
[0 1 2 1 0 0 1 2 1 0]]
[[1 2 1]
[1 2 1]]
[[1 2 1 1 0 0 1 2 1 0]
[1 2 1 1 0 0 1 2 1 0]]
它在 [0][1]
、[1][1]
中保留原始值。如果你想删除它们,那么你可以复制子数组,在原来的地方设置 zero
,然后把副本放在新的地方
import numpy as np
x = [
[0, 1, 2, 1, 0, 0, 1, 2, 1, 0 ],
[0, 1, 2, 1, 0, 0, 1, 2, 1, 0 ]
]
arr = np.array(x)
print(arr)
subarr = arr[0:2,1:4].copy() # duplicate values
print(subarr)
arr[0:2,1:4] = 0 # remove original values
arr[0:2,0:3] = subarr # put in new place
print(arr)
结果
[[0 1 2 1 0 0 1 2 1 0]
[0 1 2 1 0 0 1 2 1 0]]
[[1 2 1]
[1 2 1]]
[[1 2 1 0 0 0 1 2 1 0]
[1 2 1 0 0 0 1 2 1 0]]
我知道您可以使用 NumPy 移动数组,因此如果您使用 np.roll,您可以将数组向右或向左移动。我想知道如何将数组中的一组特定值从左到右向上或向下移动。
例如
如果我想将红色圆圈中的内容向左移动,我怎么才能只移动它而不是其他内容?
numpy
可以使用 slice
获取子数组,然后在不同的地方分配它
import numpy as np
x = [
[0, 1, 2, 1, 0, 0, 1, 2, 1, 0 ],
[0, 1, 2, 1, 0, 0, 1, 2, 1, 0 ]
]
arr = np.array(x)
print(arr)
subarr = arr[0:2,1:4] # get values
print(subarr)
arr[0:2,0:3] = subarr # put in new place
print(arr)
结果:
[[0 1 2 1 0 0 1 2 1 0]
[0 1 2 1 0 0 1 2 1 0]]
[[1 2 1]
[1 2 1]]
[[1 2 1 1 0 0 1 2 1 0]
[1 2 1 1 0 0 1 2 1 0]]
它在 [0][1]
、[1][1]
中保留原始值。如果你想删除它们,那么你可以复制子数组,在原来的地方设置 zero
,然后把副本放在新的地方
import numpy as np
x = [
[0, 1, 2, 1, 0, 0, 1, 2, 1, 0 ],
[0, 1, 2, 1, 0, 0, 1, 2, 1, 0 ]
]
arr = np.array(x)
print(arr)
subarr = arr[0:2,1:4].copy() # duplicate values
print(subarr)
arr[0:2,1:4] = 0 # remove original values
arr[0:2,0:3] = subarr # put in new place
print(arr)
结果
[[0 1 2 1 0 0 1 2 1 0]
[0 1 2 1 0 0 1 2 1 0]]
[[1 2 1]
[1 2 1]]
[[1 2 1 0 0 0 1 2 1 0]
[1 2 1 0 0 0 1 2 1 0]]