我一直在跟踪关于python的视频教程,无论键入与视频完全相同的代码,我都收到了一个属性错误。
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(.)”,我根据文档提供的内容尝试了更新的方法。
percentage = 100*A/cal.values.reshape(1,4)在此尝试之后,仍然会导致属性错误。我不知道我是不是做错了,因为我对python完全陌生。
发布于 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
这与从长度不等的列表创建数组有关。所以我假设在这一行:
[56.0, 0.0, 4,4, 68.0]4,4应该是4.4,对吧?
发布于 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提供了以下输出:
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)产出:
[[94.91525424 0. 2.83140283 88.42652796]
[ 2.03389831 43.51464435 33.46203346 10.40312094]
[ 3.05084746 56.48535565 63.70656371 1.17035111]]https://stackoverflow.com/questions/71158544
复制相似问题