【发布时间】:2021-11-15 22:36:39
【问题描述】:
我正在尝试将具有不同格式的多维数组转换为元组,同时保留不同的格式。这是构建数组的代码
nodeData=np.empty((npoints*npoints,4))
ii=0
for i in range (npoints):
for j in range (npoints):
nodeData[ii,0]=int(ii+1)
nodeData[ii,1]=float(X[i,j])
nodeData[ii,2]=float(Y[i,j])
nodeData[ii,3]=float(Z[i,j])
ii+=1
哪个输出
[[ 1. 10. 2. 0. ]
[ 2. 9.23463314 1.84775906 0. ]
[ 3. 8.58578682 1.41421354 0. ]
[ 4. 8.15224103 0.76536686 0. ]
[ 5. 8. 0. 0. ]
[ 6. 10. 4. 0. ]
[ 7. 8.14486726 3.94570562 0. ]
[ 8. 6.43933982 3.56066012 0. ]
[ 9. 6.05429438 1.8551327 0. ]
[ 10. 6. 0. 0. ]
[ 11. 10. 6. 0. ]
[ 12. 7.07624214 6.00295346 0. ]
[ 13. 4.29289317 5.70710671 0. ]
[ 14. 3.99704657 2.92375783 0. ]
[ 15. 4. 0. 0. ]
[ 16. 10. 8. 0. ]
[ 17. 6.02814844 8.02067549 0. ]
[ 18. 2.14644665 7.85355332 0. ]
[ 19. 1.97932457 3.97185155 0. ]
[ 20. 2. 0. 0. ]
[ 21. 10. 10. 0. ]
[ 22. 5. 10. 0. ]
[ 23. 0. 10. 0. ]
[ 24. 0. 5. 0. ]
[ 25. 0. 0. 0. ]]
现在,当我尝试使用 nodeData = tuple(map(tuple, nodeData)) 将其转换为元组时,我得到了
((1.0, 10.0, 2.0, 0.0), (2.0, 9.234633143257458, 1.847759058732358, 0.0), (3.0, 8.5857868194580078, 1.4142135381698608, 0.0), (4.0, 8.1522410342120963, 0.76536686381751795, 0.0), (5.0, 8.0, 0.0, 0.0), (6.0, 10.0, 4.0, 0.0), (7.0, 8.144867260307727, 3.9457056195410947, 0.0), (8.0, 6.439339816570282, 3.5606601238250732, 0.0), (9.0, 6.0542943801670015, 1.8551327030961533, 0.0), (10.0, 6.0, 0.0, 0.0), (11.0, 10.0, 6.0, 0.0), (12.0, 7.0762421416553485, 6.0029534580819224, 0.0), (13.0, 4.2928931713104248, 5.7071067094802856, 0.0), (14.0, 3.997046571142258, 2.9237578279641867, 0.0), (15.0, 4.0, 0.0, 0.0), (16.0, 10.0, 8.0, 0.0), (17.0, 6.028148440014629, 8.0206754926510051, 0.0), (18.0, 2.1464466452598572, 7.8535533249378204, 0.0), (19.0, 1.9793245736169094, 3.9718515524632179, 0.0), (20.0, 2.0, 0.0, 0.0), (21.0, 10.0, 10.0, 0.0), (22.0, 5.0, 10.0, 0.0), (23.0, 0.0, 10.0, 0.0), (24.0, 0.0, 5.0, 0.0), (25.0, 0.0, 0.0, 0.0))
当我试图将每行的第一个值保存为整数时,它已将所有值转换为浮点数:
((1, 10.0, 2.0, 0.0),
(2, 9.234633143257458, 1.847759058732358, 0.0),
(3, 8.5857868194580078, 1.4142135381698608, 0.0),
(4, 8.1522410342120963, 0.76536686381751795, 0.0),
(5, 8.0, 0.0, 0.0),
(6, 10.0, 4.0, 0.0),
(7, 8.144867260307727, 3.9457056195410947, 0.0),
(8, 6.439339816570282, 3.5606601238250732, 0.0),
(9, 6.0542943801670015, 1.8551327030961533, 0.0),
(10, 6.0, 0.0, 0.0),
(11, 10.0, 6.0, 0.0),
(12, 7.0762421416553485, 6.0029534580819224, 0.0),
(13, 4.2928931713104248, 5.7071067094802856, 0.0),
(14, 3.997046571142258, 2.9237578279641867, 0.0),
(15, 4.0, 0.0, 0.0),
(16, 10.0, 8.0, 0.0),
(17, 6.028148440014629, 8.0206754926510051, 0.0),
(18, 2.1464466452598572, 7.8535533249378204, 0.0),
(19, 1.9793245736169094, 3.9718515524632179, 0.0),
(20, 2.0, 0.0, 0.0),
(21, 10.0, 10.0, 0.0),
(22, 5.0, 10.0, 0.0),
(23, 0.0, 10.0, 0.0),
(24, 0.0, 5.0, 0.0),
(25, 0.0, 0.0, 0.0))
或者,无论如何都可以在不构建数组的情况下获得最终结果,而是直接以正确的格式构建元组? 任何帮助将不胜感激。
【问题讨论】:
-
它们不是“不同的格式”,
numpy.ndarray对象保存同质数据。您的 dtype 是浮点类型。您可以使用结构化数组。但是首先创建这个数组有什么意义呢? -
我需要元组来构建 abaqus 的输出数据库