向量和单元格/ DataFrame

时间:2016-11-28 19:43:42

标签: python-3.x numpy

在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中执行此操作?

1 个答案:

答案 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