为了账号安全,请及时绑定邮箱和手机立即绑定

属性错误: 'numpy.ndarray' 对象没有属性 'insert'

属性错误: 'numpy.ndarray' 对象没有属性 'insert'

holdtom 2022-08-02 10:35:10
法典:import numpy as npcoordinates = np.array([])for x in range(1, 9):  for y in range(1, 9):    coordinates = coordinates.insert(coordinates, (x,y))  尽管阅读了许多教程和Stack Overflow响应,但我尝试的所有内容都不起作用。有人可以帮忙吗?
查看完整描述

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


查看完整回答
反对 回复 2022-08-02
?
喵喔喔

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


查看完整回答
反对 回复 2022-08-02
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信