【发布时间】:2018-06-24 01:09:52
【问题描述】:
问题说明
给定两个 2D numpy 数组和一个 1D numpy 数组:
F = np.array[[-3764.9303402755891, -3764.9303494098212, -3764.9304257856452, -3764.9306329129422], [-3764.9338022566421, -3764.9338129752682, -3764.9338970928361, -3764.9341184863633]]
T = np.array[[ 10., 30.1, 50.2, 70.3],
[ 10., 30.1, 50.2, 70.3]]
V = np.array[ 226.331804, 228.817957]
我想生成 4 个文件:
# F_10.0K.dat:
226.331804 -3764.9303402755891
228.817957 -3764.9338022566421
# F_30.1K.dat:
226.331804 -3764.9303494098212
228.817957 -3764.9338129752682
# F_50.2K.dat:
226.331804 -3764.9304257856452
228.817957 -3764.9338970928361
# F_70.3K.dat:
226.331804 -3764.9306329129422
228.817957 -3764.9341184863633
我的尝试:
我注意到这两个切片操作:
print ' F_all[:,0] = ', F_all[:, 0]
print ' F_all[:,1] = ', F_all[:, 1]
返回:
F_all[:,0] = [-3764.93034028 -3764.93380226]
F_all[:,1] = [-3764.93034941 -3764.93381298]
这是前两个文件的第二列:F_10.0K.dat 和 F_30.1K.dat。
所以,我可以循环了:
F_all_each_V_at_cte_T = []
for indx in range(0, cols):
aux = F_all[:,indx]
print ' F_all[:, indx] = ', F_all[:,indx]
F_all_each_V_at_cte_T.append(aux)
print 'F_all_each_V_at_cte_T = ', F_all_each_V_at_cte_T
output_array = np.vstack((VOLUME_EACH, F_all_each_V_at_cte_T)).T
np.savetxt('F_vs_V_10.0K.dat', output_array, header="Volume F at 10.0K", fmt="%0.13f")
结果是:
F_all_each_V_at_cte_T = [array([-3764.93034028, -3764.93380226]), array([-3764.93034941, -3764.93381298]), array([-3764.93042579, -3764.93389709]), array([-3764.93063291, -3764.93411849])]
# Volume F at 10.0K
226.3318040000000 -3764.9303402755891 -3764.9303494098212 -3764.9304257856452 -3764.9306329129422
228.8179570000000 -3764.9338022566421 -3764.9338129752682 -3764.9338970928361 -3764.9341184863633
这几乎实现了解决方案,但是,所有列都被打印了。如何生成上述文件?
【问题讨论】:
-
np.array[ 226.331804, 228.817957]不是有效的 Python 语法
标签: python numpy for-loop multidimensional-array slice