Python 属性错误:';numpy.ndarray和#x27;对象没有属性';插入';
代码: 尽管阅读了许多教程和堆栈溢出响应,但我尝试的一切都不起作用。有人能帮忙吗?替换这一行:Python 属性错误:';numpy.ndarray和#x27;对象没有属性';插入';,python,numpy,numpy-ndarray,Python,Numpy,Numpy Ndarray,代码: 尽管阅读了许多教程和堆栈溢出响应,但我尝试的一切都不起作用。有人能帮忙吗?替换这一行: import numpy as np coordinates = np.array([]) for x in range(1, 9): for y in range(1, 9): coordinates = coordinates.insert(coordinates, (x,y)) 为此: coordinates = coordinates.insert(coordinates
import numpy as np
coordinates = np.array([])
for x in range(1, 9):
for y in range(1, 9):
coordinates = coordinates.insert(coordinates, (x,y))
为此:
coordinates = coordinates.insert(coordinates, (x,y))
您将得到一个错误,因为您从索引1开始循环,而1是Python中的第二个位置(索引从0开始)。无法在空numpy
数组中的位置1插入内容。要使代码正常工作,必须从索引0开始循环:
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.])
或作为列表:
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)]
不鼓励重复调用numpy
函数,如np.insert
和np.append
,因为它们每次都会创建一个全新的数组。如果您必须像这样反复工作,列表附加会更好
使用numpy
使用类似meshgrid
的方法生成“坐标”
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)]
也许在
numpy
文档中查找一个方法可以帮助您:numpy.insert
坐标。只有当坐标是列表时,insert
才有效。您在哪里看到insert
的文档?您使用的是insert
混合了list.insert
和np.insert
样式。重复插入数组效率低下。
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)]
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]])