列表没有属性重塑

2024-04-26 07:59:42 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面给出的代码中,我在列表的最后一行得到了一个错误,该行的属性是reforme

cal应该是numpy数组,但是校准重塑给出了错误。另外,在打印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个元素的数组,它将是行中元素的总和。你知道吗


Tags: 代码importnumpy元素列表属性错误np
2条回答

如果您仔细看的话,您的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.        ]]

问题是第二行有5个元素而不是4个。如果您更正此错误,您的脚本将正常工作。你知道吗

相关问题 更多 >