好的,所以在阅读了关于 numpy 结构化数组的教程之后,我可以创建一些简单的示例:
from numpy import array, ones
names=['scalar', '1d-array', '2d-array']
formats=['float64', '(3,)float64', '(2,2)float64']
my_dtype = dict(names=names, formats=formats)
struct_array1 = ones(1, dtype=my_dtype)
struct_array2 = array([(42., [0., 1., 2.], [[5., 6.],[4., 3.]])], dtype=my_dtype)
(我的预期用例将包含三个以上的条目,并且将使用非常长的一维数组。)所以,在我们尝试执行一些基本数学之前,一切都很顺利。我收到以下所有错误:
struct_array1 + struct_array2
struct_array1 * struct_array2
1.0 + struct_array1
2.0 * struct_array2
显然,即使是最简单的结构化数组也不支持简单的运算符(+、-、*、/)。还是我错过了什么?我应该看其他一些软件包(不要说 Pandas,因为这完全是矫枉过正)?这似乎是一个明显的能力,所以我有点傻眼。但是在网上很难找到任何关于这个的喋喋不休。这不会严重限制结构化数组的有用性吗?为什么有人会使用结构数组而不是打包到字典中的数组?是否有技术原因导致这可能难以解决?或者,如果正确的解决方案是执行繁重的重载工作,那么如何在保持操作快速的同时完成呢?