列表没有属性重塑

List does not have attribute reshape

在下面给出的代码中,我在列表具有重塑属性的最后一行收到错误

cal 应该是一个 numpy 数组,但 cal.reshape 给出了错误。此外,在打印 cal 时,我得到了 13 个元素的数组,但预期是 4 个元素的数组,这将是行中元素的总和。

import numpy as np

A=np.array([[56.0,0.0,4.4,68.0],

[1.0,2.0,104.0,52.0,8.0],

[1.8,135.0,99.0,0.9]])

cal=A.sum(axis=0)

print(cal)

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

cal 应该是一个 numpy 数组,但 cal.reshape 给出了错误。此外,在打印 cal 时,我得到了 13 个元素的数组,但预计会有 4 个元素的数组,这将是行中元素的总和。

问题是第 2 行有 5 个元素,而不是 4 个。如果您更正此错误,您的脚本将正常运行。

如果你仔细观察,你的二维列表 A 在第二行有 5 个元素,而不是像其他行那样有 4 个元素,这会导致 np.sum 出现问题,因为 numpy 假定一个同构数组所有子列表的行都相等。

所以你需要像这样从第二个列表中删除一个元素,(在下面的例子中我删除了第一个元素)使你的数组​​成为 3x4

import numpy as np

A=np.array([[56.0,0.0,4.4,68.0],

[2.0,104.0,52.0,8.0],

[1.8,135.0,99.0,0.9]])

cal=A.sum(axis=0)

print(cal)

percentage=100*A/cal
print(percentage)

输出结果为

[[93.64548495  0.          2.83140283 88.42652796]
 [ 3.34448161 43.51464435 33.46203346 10.40312094]
 [ 3.01003344 56.48535565 63.70656371  1.17035111]]

或者您可以在第一行和第三行添加额外的 0 并将您的数组重新整形为 (1,5)

import numpy as np

A=np.array([[56.0,0.0,4.4,68.0, 0],

[1.0, 2.0,104.0,52.0,8.0],

[1.8,135.0,99.0,0.9, 0]])

cal=A.sum(axis=0)

print(cal)

percentage=100*A/cal
print(percentage)

这里的输出将是

[[ 95.23809524   0.           2.12150434  56.24483044   0.        ]
 [  1.70068027   1.45985401  50.14464802  43.01075269 100.        ]
 [  3.06122449  98.54014599  47.73384764   0.74441687   0.        ]]