我有一个 5 元组列表的数据。前两个是整数索引i, j
,接下来三个是浮点数xyz
。
data = [(1, 2, 3.141, 1.414, 2.718),
(3, 4, 1.111, 2.222, 3.333),
(0, 0, 0.000, 0.000, 0.000)]
我听说我可以做类似的事情
dt = [('ij', 'int', 2), ('xyz', 'float', 3)]
struct_array = np.array(data, dtype=dt)
所以我可以将数组的最后三列作为二维浮点数组访问。例如得到 r = sqrt(x^2 + y^2 + z^2) 我应该可以说
r = np.sqrt(((struct_array['xyz']**2).sum(axis=1)))
并得到结果
array([4.38780139, 4.15698136, 0. ])
同样的方式
normal_array = np.array(data)
r = np.sqrt(((array[:, 2:]**2).sum(axis=1)))
但我尝试过的一切都会导致错误消息
ValueError:无法将长度为 5 的元组分配给具有 2 个字段的结构。
我查看了https://docs.scipy.org/doc/numpy/user/basics.rec.html但如果我的尝试失败的答案在那里,我没有看到它。