2 回答
TA贡献1863条经验 获得超2个赞
目前尚不清楚您要生成什么,但是如果您想要“坐标”元组列表,这里有一种方法:
In [310]: alist = []
...: for x in range(1,4):
...: for y in range(1,4):
...: alist.append((x,y))
...:
In [311]: alist
Out[311]: [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
或作为列表理解:
In [312]: [(x,y) for x in range(1,4) for y in range(1,4)]
Out[312]: [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
不鼓励重复调用像 和 这样的函数,因为它们每次都会创建一个全新的数组。列表追加要好得多 - 如果你必须像这样反复工作。numpynp.insertnp.append
使用类似的东西来生成“坐标”numpymeshgrid
In [319]: np.meshgrid(range(1,4),range(1,4))
Out[319]:
[array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]]), array([[1, 1, 1],
[2, 2, 2],
[3, 3, 3]])]
In [320]: np.reshape(_,(-1,2)) # rearrange into (n,2) array
Out[320]:
array([[1, 2],
[3, 1],
[2, 3],
[1, 2],
[3, 1],
[1, 1],
[2, 2],
[2, 3],
[3, 3]])
TA贡献1735条经验 获得超5个赞
替换此行:
coordinates = coordinates.insert(coordinates, (x,y))
有了这个:
coordinates = np.insert(coordinates, x,y)
你会得到一个错误,因为你从索引 1 开始循环,而 1 是 Python 中的第二个位置(索引从 0 开始)。不能在空数组中的位置 1 处插入某些内容。要使代码正常工作,必须在索引 0 处开始循环:numpy
import numpy as np
coordinates = np.array([])
for x in range(0, 9):
for y in range(0, 9):
coordinates = np.insert(coordinates, x, y)
Out[10]:
array([8., 8., 8., 8., 8., 8., 8., 8., 8., 7., 6., 5., 4., 3., 2., 1., 0.,
7., 6., 5., 4., 3., 2., 1., 0., 7., 6., 5., 4., 3., 2., 1., 0., 7.,
6., 5., 4., 3., 2., 1., 0., 7., 6., 5., 4., 3., 2., 1., 0., 7., 6.,
5., 4., 3., 2., 1., 0., 7., 6., 5., 4., 3., 2., 1., 0., 7., 6., 5.,
4., 3., 2., 1., 0., 7., 6., 5., 4., 3., 2., 1., 0.])
添加回答
举报