好的,经过学习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,因为这对它来说太过杀伤力了)?这似乎是一个显而易见的功能,所以我有点困惑。但很难在网络上找到任何关于此的讨论。这是否严重限制了结构化数组的实用性?为什么有人会使用结构化数组而不是打包成字典的数组?是否有技术原因导致这可能是棘手的?或者,如果正确的解决方案是进行繁琐的重载工作,那么如何在保持操作快速的同时完成呢?