在MATLAB中,我可以将数字和字符串的列向量组合到3x1单元格以生成3x3维度的单个单元格(C),如下所示
C =
8 'CNDA-ESP_SIMRAD_MDS_DGPS_2000_2001.xlsx' 415x3 double
2 'CNDA-ESP_SIMRAD_MDS_DGPS_2006_2007.xlsx' 986x3 double
2 'CNDA-ESP_SIMRAD_MDS_DGPS_2010_2011.xlsx' 704x3 double
是否可以在Python中执行此操作?
答案 0 :(得分:1)
在MATLAB拥有单元之前很久,Python就有了列表。它们是1d,但可以包含其他列表。事实上,没有numpy
嵌套列表用于创建'矩阵'。
具有对象dtype的numpy
数组包含指向对象的指针,因此它们与列表类似。您无法使用列表附加到它们。但它们像常规数组一样是多维的。因此,根据您的观点,它们是增强列表或降级列表。
构建列表是trival
alist = [array1, array2, array3, ...]
构造对象数组可能比较棘手。如果子数组或对象的大小和类型不同,则很容易 - 只需将列表版本包装在np.array(alist, dtype=object)
中。
但是如果子阵列都具有相同的形状,np.array
会从它们创建一个更高维的数组。最好的方法是创建正确形状的“空白”数组,并指定值。
我在以下网址讨论了这些问题:
Can I construct a numpy object zero-d array from its value in a single expression?
我提到了scipy.io.loadmat
,它能够加载MATLAB文件。您可以尝试将单元格写入.mat,然后在Python中加载它们。这将为您提供有关该函数如何尝试创建等效函数的想法。
有关对象数组v的更多内容: Irregular Numpy matrix