gpt4 book ai didi

python - Numpy 挤压 - 'list' 对象没有属性 'squeeze'

转载 作者:行者123 更新时间:2023-11-28 22:18:10 33 4
gpt4 key购买 nike

可以运行以下代码并且不会出现错误:

>>> np.squeeze([''])
array('', dtype='<U1')
>>> np.squeeze([[]])
array([], dtype=float64)

但是正在运行:

>>> np.squeeze(['', []])

返回以下错误:

Traceback (most recent call last):
File "C:\Users\leonardo.schettini\Documents\recrutai\recrutai\testenv\lib\site-packages\numpy\core\fromnumeric.py", line 1240, in squeeze
squeeze = a.squeeze
AttributeError: 'list' object has no attribute 'squeeze'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\leonardo.schettini\Documents\recrutai\recrutai\testenv\lib\site-packages\numpy\core\fromnumeric.py", line 1242, in squeeze
return _wrapit(a, 'squeeze')
File "C:\Users\leonardo.schettini\Documents\recrutai\recrutai\testenv\lib\site-packages\numpy\core\fromnumeric.py", line 42, in _wrapit
result = getattr(asarray(obj), method)(*args, **kwds)
File "C:\Users\leonardo.schettini\Documents\recrutai\recrutai\testenv\lib\site-packages\numpy\core\numeric.py", line 492, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: setting an array element with a sequence

为什么会出现这种情况?!


编辑:

what versions?

  • Python == 3.6
  • numpy == 1.14.3

why would you want to squeeze such a list?

我正在使用内部词典来获取同义词和首字母缩略词的引理。有时,当输入的单词不在我的字典中时,我选择将其保留为引理,有时我更愿意删除该单词。引理被定义为 n 个单词的数组。

为了跟踪引理在输入文本中的真实位置,我想在返回列表中添加 0 个单词的引理,这是一个空列表。乍一看,我以为挤压会自行删除空列表...

最佳答案

np.squeeze 实际上只是一个数组方法 a.squeeze() 的包装器。您的参数是一个列表,它没有该方法。因此该函数尝试从列表中创建一个数组:

In [325]: np.array(['', []])
....
ValueError: setting an array element with a sequence

您正在尝试从对象、字符串和列表的混合中创建一个数组。

In [326]: np.array(['', []],object)
Out[326]: array(['', list([])], dtype=object)

如果你告诉它创建一个对象数据类型数组,它就可以。

但是如果没有该规范,它首先尝试创建字符串数据类型数组。但是随后在将列表放入字符串槽中时出现问题 - 因此出现错误。

除了出于好奇之外,您为什么要压缩这样一个列表?


如果列表在前,np.array 可以创建一个对象数组:

In [327]: np.array([[],''])
Out[327]: array([list([]), ''], dtype=object)

这只是给定不同大小和/或类型的项目列表时 np.array 工作方式的怪癖之一。它的主要任务是从整齐嵌套的数字或字符串列表中创建一个数组。

In [328]: np.array([[1,2,3,4]])
Out[328]: array([[1, 2, 3, 4]])
In [329]: np.squeeze([[1,2,3,4]])
Out[329]: array([1, 2, 3, 4])

给定各种元素,它必须“猜测”您真正想要什么;有时它猜测错误,有时它会放弃。

关于python - Numpy 挤压 - 'list' 对象没有属性 'squeeze',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50730780/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com