Если вы внимательно посмотрите, ваш 2D-список A
содержит 5 элементов во второй строке вместо 4, как и другие строки, и это вызывает проблемы с np.sum
, поскольку numpy предполагает однородный массив, где все подсписки имеют равные строки.
Так что вам нужно либо удалить элемент из 2-го списка, например, так (в приведенном ниже примере я удалил первый элемент), чтобы сделать ваш массив 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. ]]