列表没有属性重塑
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. ]]
在下面给出的代码中,我在列表具有重塑属性的最后一行收到错误
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. ]]