在下面给出的代码中,我在列表的最后一行出现错误,该列表具有重塑属性
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个元素的数组,这将是行中元素的总和。
答案 0 :(得分:1)
问题在于第二行包含5个元素而不是4个元素。如果更正此错误,脚本将起作用。
答案 1 :(得分:1)
如果仔细观察,您的2D列表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. ]]