我想压平一个numpy矩阵以获得更好的打印效果:
我试过了:
import numpy as np
latt_const = 4.05
lattice = np.matrix([
[1, 0, 0],
[0, 1, 0],
[0, 0, 1],
])
lattice_cmd = "custom {} a1 {} {} {} a2 {} {} {} a3 {} {} {}".format(
latt_const, *lattice.flatten()
)
但这引发了一个例外:
IndexError: tuple index out of range
答案 0 :(得分:0)
使用np.matrix
代替*ip=&ip
可以解决问题。
答案 1 :(得分:0)
当你使用.format时,这个函数需要两个参数{} {},在你的例子中是latt_const和lattice.flatten()。您的代码中的问题是您不需要插入十个{},只需要其中两个。
这应该有效:
import numpy as np
latt_const = 4.05
lattice = np.matrix([
[1, 0, 0],
[0, 1, 0],
[0, 0, 1],
])
print("custom {} My_Matrix {} ".format(latt_const, lattice.flatten(0)))
如果您需要将它们分开,请尝试:
import numpy as np
latt_const = 4.05
lattice = np.matrix([
[1, 0, 0],
[0, 1, 0],
[0, 0, 1],
])
a1 = lattice[0,:] # first row
a2 = lattice[1,:] # second row
a3 = lattice[2,:] # third row
print("custom {} a1 {} a2 {} a3 {} ".format(latt_const, a1, a2, a3))