我只能找到使用元组坐标分配某些值的结果,例如this one。
我想根据其坐标将值分配给二维数组。最简单的情况是将每个元素的值设置为其第二个索引(例如x坐标)。这样,
x[0][0] = 0
x[1][0] = 0
...
x[2][0] = 0
x[0][1] = 1
x[0][2] = 2
...
更复杂的情况是将这些值设置为到特定点(x, y)
的欧几里得距离。
我当前的解决方案是使用for循环,这肯定是无效的。向量化的实现会很好。
我当前的实现方式:
x_mask = np.zeros((256, 256))
for i in range(256):
for j in range(256):
x_mask[i][j] = j
答案 0 :(得分:2)
您可以分配范围并利用NumPy broadcasting:
A = np.zeros((256, 256))
A[:] = range(A.shape[1])
# or A[:] = np.arange(A.shape[1])
您选择的方法将取决于您希望应用的功能。
答案 1 :(得分:2)
numpy.mgrid
似乎是解决此问题的正确工具(特别是如果您同时需要x和y)。
示例摘自文档:
>>> np.mgrid[0:5,0:5]
array([[[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1],
[2, 2, 2, 2, 2],
[3, 3, 3, 3, 3],
[4, 4, 4, 4, 4]],
[[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]]])
答案 2 :(得分:0)
尝试一下:
: dep(std::move(dep))