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]])