在Python中从对象中提取数组

时间:2018-01-22 08:38:14

标签: python arrays matlab object mat

我从MATLAB .mat文件中提取了一个名为mesh的{​​{1}}类型的变量。 (编辑:下面的可重复示例)

object

如何访问各个数组In [1]: mesh Out[1]: array([[ array([[ (array([[ 89, 108]], dtype=uint8), array([[-131.659809], [-131.659809], [-131.659809], ..., [ 52.022239], [ 52.022239], [ 52.022239]]), array([[ 189.358345], [ 187.271049], [ 185.183753], ..., [ -29.807736], [ -31.895032], [ -33.982328]]))]], dtype=[('dim', 'O'), ('x', 'O'), ('y', 'O')])]], dtype=object) dimx

可重复示例:

我无法像导入的对象那样将y分配给数组。

此外,导入的对象具有对象大小(1,1),而此示例具有对象大小(1,1,1,1)。

dtype=uint8

1 个答案:

答案 0 :(得分:0)

要访问上面的单独数组,可以执行以下操作:

>>> mesh[0][0][0][0][0] # dim
array([[ 6.,  6.]])
>>> mesh[0][0][0][0][1] # x
array([[-131.659809],
   [-131.659809],
   [-131.659809],
   [  52.022239],
   [  52.022239],
   [  52.022239]])
>>> mesh[0][0][0][0][2] # y
array([[ 189.358345],
   [ 187.271049],
   [ 185.183753],
   [ -29.807736],
   [ -31.895032],
   [ -33.982328]])

要设置一个值,例如可以:

>>> mesh[0][0][0][0][0][0][0]=1    
>>> mesh
array([[[[ (array([[ 1.,  6.]]), array([[-131.659809],
   [-131.659809],
   [-131.659809],
   [  52.022239],
   [  52.022239],
   [  52.022239]]), array([[ 189.358345],
   [ 187.271049],
   [ 185.183753],
   [ -29.807736],
   [ -31.895032],
   [ -33.982328]]))]]]], dtype=object)

声明

这个答案是黑客,而不是解决方案。它并不意味着被解释为一般性答案,而是特定于上面的确切示例。它不处理numpy,只是能够访问特定的数组。