如何更改 numpy 数组中值的位置?
Posted
技术标签:
【中文标题】如何更改 numpy 数组中值的位置?【英文标题】:How can i change position of value in numpy array? 【发布时间】:2022-01-08 09:28:42 【问题描述】:如何通过 numpy 数组中的坐标(x,y)更改 green circle
的位置?
import numpy as np
matrix = np.array(
[
['????', '⬛', '⬛', '⬛'],
['⬛', '⬛', '⬛', '⬛'],
['⬛', '⬛', '⬛', '⬛'],
['⬛', '⬛', '⬛', '⬛']
]
)
x, y = tuple(zip(*np.where(matrix=='????')))[0]
yield "\n".join("".join(x for x in i) for i in matrix)
【问题讨论】:
存储该圆的索引可能很方便。当你移动它时,用一个正方形替换原来的,并在新的空间中创建一个新的。 你所说的改变是什么意思?你给坐标和绿色圆圈“去”在新的位置,而旧的恢复到正方形? 是的,我试着去做 【参考方案1】:您可以将旧位置设置为方形,将新位置设置为圆形:
old_pos = (0,0)
new_pos = (1,2)
def change_pos(matrix,old,new):
matrix[old] = '⬛'
matrix[new] = '?'
change_pos(matrix, old_pos, new_pos)
matrix
输出:
array([['⬛', '⬛', '⬛', '⬛'],
['⬛', '⬛', '?', '⬛'],
['⬛', '⬛', '⬛', '⬛'],
['⬛', '⬛', '⬛', '⬛']], dtype='<U1')
使用类
如果你的目标是制作某种游戏,你应该为你的棋盘使用一个类:
import numpy as np
class Matrix():
def __init__(self, pos=(0,0), size=(3,3)):
self.pos = pos
self.matrix = np.empty(size, dtype='<U1')
self.matrix[:,:] = '⬛'
self.matrix[pos] = '?'
def __repr__(self):
return self.matrix.__repr__()
def __str__(self):
return self.matrix.__str__()
def change_pos(self, new):
self.matrix[self.pos] = '⬛'
self.matrix[new] = '?'
self.pos = new
示例:
m = Matrix()
print(m)
m.change_pos((2,1))
print(m)
【讨论】:
@RAINGM 如果您的目标是制作某种游戏,请查看更新,您可能会喜欢它;) 它更好,谢谢【参考方案2】:import numpy as np
matrix = np.array(
[
['?', '⬛', '⬛', '⬛'],
['⬛', '⬛', '⬛', '⬛'],
['⬛', '⬛', '⬛', '⬛'],
['⬛', '⬛', '⬛', '⬛']
]
)
def change_green(x, y):
x1, y1 = tuple(zip(*np.where(matrix=='?')))[0]
matrix[x1][y1] = '⬛'
matrix[x][y] = '?'
change_green(1, 1)
print(matrix)
结果:
[
['⬛', '⬛', '⬛', '⬛'],
['⬛', '?', '⬛', '⬛'],
['⬛', '⬛', '⬛', '⬛'],
['⬛', '⬛', '⬛', '⬛']
]
【讨论】:
以上是关于如何更改 numpy 数组中值的位置?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 numpy 或 pandas 创建(或更改)数组/列表的维度?
如何更改 tensorflow 的 numpy 数组的 dtypes