我正在使用Python处理3D列表。我正在尝试沿z轴求和每个值。 我的3D列表:
class cylinderType
{
public:
cylinderType();
~cylinderType();
private:
circleType baseOfCylinder;
};
但是我有点迷失了:
a=[[[11,12,13],[14,15,16],[17,18,19]],
[[21,22,23],[24,25,26],[27,28,29]],
[[31,32,33],[34,35,36],[37,38,39]]]
全部返回print(a[:][0][0])
print(a[0][:][0])
print(a[0][0][:])
我有解决方法:
[31,32,33]
但这似乎很笨拙,所以我希望有一种更Python化的方式
要弄清期望的结果,将是:for i in range(len(a[0])):
for j in range(len(a[0][0])):
b[i][j]=sum([a[k][i][j] for k in range(len(a))])
答案 0 :(得分:0)
感谢您的回答。可以,但是我发现了另一个更清洁的解决方案,需要导入numpy。
a=[[[11,12,13],[14,15,16],[17,18,19]],
[[21,22,23],[24,25,26],[27,28,29]],
[[31,32,33],[34,35,36],[37,38,39]]]
print(numpy.sum(a, axis=0))
# prints [[63 66 69] [72 75 78] [81 84 87]]
可以使用以下方法将其转换回列表:
numpy.sum(a, axis=0).tolist()
次要注意,即使您转换回列表后,它也比问题中的嵌套for循环快大约30%。 我还尝试测试Aphton的答案,但这是为python 2.7编写的,并将xrange更改为范围不正确的结果。我还发现它比嵌套循环要慢50%