我一直试图找到一种干净的、pythonic的方法来填充一个空的numpy数组中的每个元素,使该元素的索引值成为其值,而不使用for循环。对于1-D数组,可以很容易地使用类似
(编辑:或者就像这样构建一个普通的列表,然后使用
例子:
np.arange
或基本的range
函数。但在2-D及更高维度的情况下,我不知道如何轻松地做到这一点。(编辑:或者就像这样构建一个普通的列表,然后使用
np.array(lst)
将其变为数组。我想我刚刚回答了自己的问题——使用列表推导?)例子:
rows = 4
cols = 4
arr = np.empty((rows, cols, 2)) # 4x4 matrix with [x,y] location
for y in range(rows):
for x in range(cols):
arr[y, x] = [y, x]
'''
Expected output:
[[[0,0], [0,1], [0,2], [0,3]],
[[1,0], [1,1], [1,2], [1,3]],
[[2,0], [2,1], [2,2], [2,3]],
[[3,0], [3,1], [3,2], [3,3]]]
'''
np.mgrid
示例。文档对我来说一团糟,我也无法从其他SO帖子中理解。 - stormontnp.moveaxis
(它是一个特殊的transpose
)而不是在此处使用transpose
。它应该适用于 nd,而无需修改 args。 - Psidom