我找不到任何描述如何做到这一点的内容,这导致我相信我没有用正确的Python惯用方式来做这件事。关于“正确”的Python方法的建议也将不胜感激。
我正在编写一个数据记录器的一堆变量(任意记录长度,已知最大长度)。在MATLAB中,我会将它们全部初始化为长度为n的零数组的1-D数组,n大于我曾经看到的条目数,分配每个单独元素variable(measurement_no) = data_point
在记录循环中,并在测量结束时修剪掉多余的零。初始化看起来像这样:
[dData gData cTotalEnergy cResFinal etc] = deal(zeros(n,1));
有没有一种在Python/NumPy中完成这个操作的方法,这样我就不必将每个变量放在自己的行上:
dData = np.zeros(n)
gData = np.zeros(n)
etc.
我也不希望只创建一个大矩阵,因为跟踪哪一列是哪个变量很麻烦。也许解决方案是创建一个(长度×变量数)
的矩阵,并将列切片分配给各个变量?
编辑:假设我最后会有很多相同长度的向量;例如,我的后处理对每个日志文件进行计算,得出许多单独的指标(>50),并存储它们,直到所有日志都被处理完为止。然后我为我计算的所有各种指标生成直方图、均值/最大值/标准差等。由于在Python中初始化50多个向量显然很困难,那么最好的方法(清晰的代码和良好的性能)是什么?
deal(zeros(n,1))
的一部分进行初始化,我不想在赋值语句左侧跟踪它们的数量。我更愿意使用结构体,但Matlab的语法使这有些痛苦。请参见我问题的编辑。 - schodgerecarray
来跟踪具有不同“列名”的相同长度的多个空向量。 - ali_m