首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“列表”对象没有属性“reshape”

“列表”对象没有属性“reshape”
EN

Stack Overflow用户
提问于 2022-02-17 12:55:05
回答 2查看 363关注 0票数 2

我一直在跟踪关于python的视频教程,无论键入与视频完全相同的代码,我都收到了一个属性错误。

代码语言:javascript
复制
import numpy as np

A = np.array([[56.0, 0.0, 4,4, 68.0],
             [1.2, 104.0, 52.0, 8.0],
             [1.8, 135.0, 99.0, 0.9]])

cal = A.sum(axis=0)
percentage = 100*A/cal.reshape(1,4)
print(percentage)

属性错误指向百分比变量,说明列表中没有属性“reshape”。我搜索了解决方案,并在文档中看到它“自0.19.0版本起就被废弃了。调用此方法将引发错误。请调用.values.reshape(.)”,我根据文档提供的内容尝试了更新的方法。

代码语言:javascript
复制
percentage = 100*A/cal.values.reshape(1,4)

在此尝试之后,仍然会导致属性错误。我不知道我是不是做错了,因为我对python完全陌生。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-17 13:01:22

我收到警告:

VisibleDeprecationWarning:不推荐从衣衫褴褛的嵌套序列(即列表或元组的列表或元组或不同长度或形状的ndarray )创建ndarray。如果您打算这样做,则在创建ndarray时必须指定'dtype=object‘。A= np.array([56.0,0.0,4,4,68.0,

根据这个问题:numpy.VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences

这与从长度不等的列表创建数组有关。所以我假设在这一行:

代码语言:javascript
复制
[56.0, 0.0, 4,4, 68.0]

4,4应该是4.4,对吧?

票数 4
EN

Stack Overflow用户

发布于 2022-02-17 13:01:33

您的第一个列表还有一个项目(其他项目分别为5vs4)。这使得它成为一个object数组,其中python列表为元素(您将得到VisibleDeprecationWarning警告)。

因此cal成为列表([56.0, 0.0, 4, 4, 68.0, 1.2, 104.0, 52.0, 8.0, 1.8, 135.0, 99.0, 0.9])的级联,而不是numpy数组,从而触发您的错误。

我认为这可能是一个错误,并将4,4更改为4.4提供了以下输出:

代码语言:javascript
复制
A = np.array([[56.0, 0.0, 4.4, 68.0],
              [1.2, 104.0, 52.0, 8.0],
              [1.8, 135.0, 99.0, 0.9],])

cal = A.sum(axis=0)
# array([ 59. , 239. , 155.4,  76.9])

percentage = 100*A/cal.reshape(1,4)
print(percentage)

产出:

代码语言:javascript
复制
[[94.91525424  0.          2.83140283 88.42652796]
 [ 2.03389831 43.51464435 33.46203346 10.40312094]
 [ 3.05084746 56.48535565 63.70656371  1.17035111]]
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71158544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档