[SciPy-User] SciPy-User Digest, Vol 162, Issue 13

Sema Atasever s.atasever at gmail.com
Mon Feb 27 04:55:18 EST 2017


Kevin,

Thank you for your quick reply to my email, the information was valuable to
me...

On Fri, Feb 24, 2017 at 7:13 PM, <scipy-user-request at python.org> wrote:

> Send SciPy-User mailing list submissions to
>         scipy-user at python.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         https://mail.python.org/mailman/listinfo/scipy-user
> or, via email, send a message with subject or body 'help' to
>         scipy-user-request at python.org
>
> You can reach the person managing the list at
>         scipy-user-owner at python.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of SciPy-User digest..."
>
>
> Today's Topics:
>
>    1. Re: Use Distance Matrix in scipy.cluster.hierarchy.linkage()?
>       (Kevin Gullikson)
>    2. Re: How to handle a scipy.io.loadmat - related bug: parts of
>       the data inaccessible after loadmat (Gregor Thalhammer)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Fri, 24 Feb 2017 14:50:23 +0000
> From: Kevin Gullikson <kevin.gullikson at gmail.com>
> To: SciPy Users List <scipy-user at python.org>
> Subject: Re: [SciPy-User] Use Distance Matrix in
>         scipy.cluster.hierarchy.linkage()?
> Message-ID:
>         <CAEUX0XfvjaC1Ek7QZm34ksHYV1ioaVsx2HdVC95XvnQo7Sx-OQ at mail.
> gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Sema,
>
> It is a two step process (at least). Here is an example:
>
>     from scipy.cluster import hierarchy
>
>     Z = hierarchy.linkage(dm, metric='precomputed')
>     labels = hierarchy.fcluster(Z, n_clusters, criterion='maxclust')
>
> The labels array will have length n, and will look like [0, 0, 1, 2, 0,
> ...]. Typically, you have to choose the number of clusters (or some other
> criterion, see fcluster docs). You can do that by looking at the dendrogram
> plot with this command, which will make a matplotlib plot:
>
>     hierarchy.dendrogram(Z)  # This has a bunch of useful keyword arguments
> too.
>
> Happy clustering!
> Kevin
>
> On Fri, Feb 24, 2017 at 12:59 AM Sema Atasever <s.atasever at gmail.com>
> wrote:
>
> > Dear SciPy list member,
> >
> > I want to ask you about clustering usign scipy.cluster.hierarchy.
> >
> > I have a *distance matrix* n*n M where M_ij is the distance between
> > object_i and object_j. You can see file format in the attachment -->
> > (dm.csv)
> >
> > I want to cluster these n objects with hierarchical clustering.
> >
> > For this purpose i am usign this python code that you can see in the
> > attachment (scipy_code.py)
> >
> > I want to ask that how can get clusters values in pdf format or text
> > format and how many clusters did i get and what clusters includes what
> > members?
> >
> > Thanks in Advance, Best regards.
> > _______________________________________________
> > SciPy-User mailing list
> > SciPy-User at python.org
> > https://mail.python.org/mailman/listinfo/scipy-user
> >
> --
> Kevin Gullikson
> Data Scientist
> Spark Cognition
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://mail.python.org/pipermail/scipy-user/
> attachments/20170224/657874c4/attachment-0001.html>
>
> ------------------------------
>
> Message: 2
> Date: Fri, 24 Feb 2017 17:13:22 +0100
> From: Gregor Thalhammer <gregor.thalhammer at gmail.com>
> To: SciPy Users List <scipy-user at python.org>
> Subject: Re: [SciPy-User] How to handle a scipy.io.loadmat - related
>         bug: parts of the data inaccessible after loadmat
> Message-ID: <589B0B68-10F3-42D6-AE35-DB7D1824B558 at gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
>
> > Am 24.02.2017 um 13:36 schrieb Propadovic Nenad <npropadovic at gmail.com>:
> >
> > Hello Matthew, hello Gregor,
> >
> > thank you for your answers.
> >
> > Yes, values struct_as_record=False and squeeze_me=True are what the
> workaround I mentioned in the initial post at:
> > http://stackoverflow.com/questions/7008608/scipy-io-
> loadmat-nested-structures-i-e-dictionaries/ <http://stackoverflow.com/
> questions/7008608/scipy-io-loadmat-nested-structures-i-e-dictionaries/>is
> based on.
> >
> > I will use that workaround, it gives nice access to everything I need.
> >
> > Why I hesitated initially, after finding it was that setting
> struct_as_record=False boils down to using the class
> scipy.io.matlab.mio5_params.mat_struct.
> >
> > When you look at the docstring of that class it says: "We deprecate this
> method of holding struct information, and will soon remove it, in favor of
> the recarray method?.
>
> This comment has been added 7 years ago, but the mat_struct is still there
> (but it is not used anymore with default settings). So I think it cannot be
> taken seriously. Perhaps you might file an issue for removing or altering
> this remark.
>
> Anyhow, the field names are accessible by
>
> y = scipy.io.loadmat("x.mat")
> y['CanData'][0, 0]['msg'].dtype.names
>
> ('RPDO2',)
>
> or
>
> y = scipy.io.loadmat("x.mat", squeeze_me=True)
> y['CanData']['msg'].item().dtype.names
>
>
> >
> > So the way I understand this, I'm building my code upon something that
> won't be around for long. An uncomfortable situation, I don't know if you
> agree? I'm a consultant, the code will be around the clients place longer
> than myself. So this was the reason I started this thread in the first
> place. I really tried to explain that in the initial post, with all the
> necessary detail, but it seems that the post was too confusing. Sorry for
> bothering everybody for so long. I'm, however, still not sure if I should
> file this as a bug, or some kind of feature request, as there seem to be
> very few people who bother (I counted maybe 2-3 more related posts, plus
> the post containing the workaround, at stack overflow).
>
> I would not consider this as a bug, more a documentation issue, which is
> resolved by this discussion. You might add a comment on stack overflow with
> your findings.
>
> Gregor
>
>
>
> >
> > Regards,
> >
> > Nenad
> >
> >
> > 2017-02-24 12:15 GMT+01:00 <scipy-user-request at python.org <mailto:
> scipy-user-request at python.org>>:
> > Send SciPy-User mailing list submissions to
> >         scipy-user at python.org <mailto:scipy-user at python.org>
> >
> > To subscribe or unsubscribe via the World Wide Web, visit
> >         https://mail.python.org/mailman/listinfo/scipy-user <
> https://mail.python.org/mailman/listinfo/scipy-user>
> > or, via email, send a message with subject or body 'help' to
> >         scipy-user-request at python.org <mailto:scipy-user-request@
> python.org>
> >
> > You can reach the person managing the list at
> >         scipy-user-owner at python.org <mailto:scipy-user-owner at python.org>
> >
> > When replying, please edit your Subject line so it is more specific
> > than "Re: Contents of SciPy-User digest..."
> >
> >
> > Today's Topics:
> >
> >    1. Re: How to handle a scipy.io.loadmat - related bug: parts of
> >       the data inaccessible after loadmat (Matthew Brett)
> >    2. Use Distance Matrix in scipy.cluster.hierarchy.linkage()?
> >       (Sema Atasever)
> >    3. Re: How to handle a scipy.io.loadmat - related bug: parts of
> >       the data inaccessible after loadmat (Gregor Thalhammer)
> >
> >
> > ----------------------------------------------------------------------
> >
> > Message: 1
> > Date: Thu, 23 Feb 2017 17:41:34 -0800
> > From: Matthew Brett <matthew.brett at gmail.com <mailto:
> matthew.brett at gmail.com>>
> > To: SciPy Users List <scipy-user at python.org <mailto:
> scipy-user at python.org>>
> > Subject: Re: [SciPy-User] How to handle a scipy.io.loadmat - related
> >         bug: parts of the data inaccessible after loadmat
> > Message-ID:
> >         <CAH6Pt5rMDjgJAQNSAQYjUb8q3f_cbLg7kHXTA084GdMCdnf09g at mail.
> gmail.com <mailto:CAH6Pt5rMDjgJAQNSAQYjUb8q3f_cbLg7kHXTA084GdMCdnf09g@
> mail.gmail.com>>
> > Content-Type: text/plain; charset=UTF-8
> >
> > Hi,
> >
> > On Thu, Feb 23, 2017 at 5:12 AM, Propadovic Nenad <npropadovic at gmail.com
> <mailto:npropadovic at gmail.com>> wrote:
> > > Hello Jason, than you a lot for the answer to my post. I was aware of
> the
> > > squeeze_me=True option, I think I mentioned it in my initial question
> post.
> > >
> > > However, as I stated in the answer to Gregors kind answer, I actually
> need a
> > > way to inspect the parts of the access path in the data structure I
> import
> > > form the x.mat-file, and if I use squeeze_me=True, parts like 'RPDO2'
> > > disappear completely:
> > >
> > >
> > > import scipy.io <http://scipy.io/>
> > >
> > > y = scipy.io.loadmat("x.mat", squeeze_me=True)
> > > cd = y['CanData']
> > > msg = cd['msg']
> > > print msg
> > >
> > > Output:
> > > ((array(((array([ 61.96,  61.96,  61.96]), u'PosAct'), (array([-0.05,
> -0.1 ,
> > > 0.3 ]), u'VelAct')),
> > >       dtype=[('PosAct', 'O'), ('VelAct', 'O')]), array([ 0.      ,
> > > 0.003968,  0.007978])),)
> > >
> > > And I really need to be able to find it by some kind of inspection, so
> that
> > > I don't return parts of the structure that don't correspond to the
> intention
> > > of the person searching.
> >
> > Sorry if I'm not following, but, does this help?
> >
> > In [36]: y = scipy.io.loadmat("x.mat")
> >
> > In [37]: y['CanData'][0, 0]['msg'][0, 0]['RPDO2']
> > Out[37]:
> > array([[ (array([[ 0.      ,  0.003968,  0.007978]]), array([[
> > (array([[(array([[ 61.96,  61.96,  61.96]]), array(['PosAct'],
> >       dtype='<U6'))]],
> >       dtype=[('Values', 'O'), ('Name', 'O')]), array([[(array([[-0.05,
> > -0.1 ,  0.3 ]]), array(['VelAct'],
> >       dtype='<U6'))]],
> >       dtype=[('Values', 'O'), ('Name', 'O')]))]],
> >       dtype=[('PosAct', 'O'), ('VelAct', 'O')]))]],
> >       dtype=[('timest', 'O'), ('sig', 'O')])
> >
> > In [54]: y2 = scipy.io.loadmat('x.mat', squeeze_me=True,
> struct_as_record=False)
> >
> > In [55]: y2['CanData'].msg.RPDO2
> > Out[55]: <scipy.io.matlab.mio5_params.mat_struct at 0x10fda7b00>
> >
> > Best,
> >
> > Matthew
> >
> >
> > ------------------------------
> >
> > Message: 2
> > Date: Fri, 24 Feb 2017 09:59:04 +0300
> > From: Sema Atasever <s.atasever at gmail.com <mailto:s.atasever at gmail.com>>
> > To: scipy-user at python.org <mailto:scipy-user at python.org>
> > Subject: [SciPy-User] Use Distance Matrix in
> >         scipy.cluster.hierarchy.linkage()?
> > Message-ID:
> >         <CAAir+CoHGmRq0s27GUxYDbffdYyvT-GuxYitM5yZ72fLPOo_5Q at mail.
> gmail.com <mailto:CAAir%2BCoHGmRq0s27GUxYDbffdYyvT-
> GuxYitM5yZ72fLPOo_5Q at mail.gmail.com>>
> > Content-Type: text/plain; charset="utf-8"
> >
> > Dear SciPy list member,
> >
> > I want to ask you about clustering usign scipy.cluster.hierarchy.
> >
> > I have a *distance matrix* n*n M where M_ij is the distance between
> > object_i and object_j. You can see file format in the attachment -->
> > (dm.csv)
> >
> > I want to cluster these n objects with hierarchical clustering.
> >
> > For this purpose i am usign this python code that you can see in the
> > attachment (scipy_code.py)
> >
> > I want to ask that how can get clusters values in pdf format or text
> format
> > and how many clusters did i get and what clusters includes what members?
> >
> > Thanks in Advance, Best regards.
> > -------------- next part --------------
> > An HTML attachment was scrubbed...
> > URL: <http://mail.python.org/pipermail/scipy-user/
> attachments/20170224/dbac91b0/attachment-0001.html <
> http://mail.python.org/pipermail/scipy-user/attachments/20170224/dbac91b0/
> attachment-0001.html>>
> > -------------- next part --------------
> > import scipy
> > import pylab
> > import scipy.cluster.hierarchy as sch
> > import pandas as pd
> > import numpy as np
> >
> > D=np.loadtxt(open("C:\dm.csv", "rb"), delimiter="\t",
> usecols=range(1,11))
> >
> > print (D)
> > print (D.shape)
> >
> > # Compute and plot dendrogram.
> > fig = pylab.figure()
> > axdendro = fig.add_axes([0.09,0.1,0.2,0.8])
> > Y = sch.linkage(D, method='single')
> > Z = sch.dendrogram(Y, orientation='right')
> > axdendro.set_xticks([])
> > axdendro.set_yticks([])
> >
> > # Plot distance matrix.
> > axmatrix = fig.add_axes([0.3,0.1,0.6,0.8])
> > index = Z['leaves']
> > D = D[index,:]
> > D = D[:,index]
> > im = axmatrix.matshow(D, aspect='auto', origin='lower')
> > axmatrix.set_xticks([])
> > axmatrix.set_yticks([])
> >
> > # Plot colorbar.
> > axcolor = fig.add_axes([0.91,0.1,0.02,0.8])
> > pylab.colorbar(im, cax=axcolor)
> >
> > # Display and save figure.
> > fig.show()
> > fig.savefig('dendrogram.png')
> > -------------- next part --------------
> > A non-text attachment was scrubbed...
> > Name: dm.csv
> > Type: text/csv
> > Size: 680 bytes
> > Desc: not available
> > URL: <http://mail.python.org/pipermail/scipy-user/
> attachments/20170224/dbac91b0/attachment-0001.csv <http://mail.python.org/
> pipermail/scipy-user/attachments/20170224/dbac91b0/attachment-0001.csv>>
> >
> > ------------------------------
> >
> > Message: 3
> > Date: Fri, 24 Feb 2017 12:15:18 +0100
> > From: Gregor Thalhammer <gregor.thalhammer at gmail.com <mailto:
> gregor.thalhammer at gmail.com>>
> > To: SciPy Users List <scipy-user at python.org <mailto:
> scipy-user at python.org>>
> > Subject: Re: [SciPy-User] How to handle a scipy.io.loadmat - related
> >         bug: parts of the data inaccessible after loadmat
> > Message-ID: <7CCED80F-462D-4BED-9540-21E262206886 at gmail.com <mailto:
> 7CCED80F-462D-4BED-9540-21E262206886 at gmail.com>>
> > Content-Type: text/plain; charset="us-ascii"
> >
> >
> > > Am 23.02.2017 um 14:12 schrieb Propadovic Nenad <npropadovic at gmail.com
> <mailto:npropadovic at gmail.com>>:
> > >
> > > Hello Jason, than you a lot for the answer to my post. I was aware of
> the squeeze_me=True option, I think I mentioned it in my initial question
> post.
> > >
> > > However, as I stated in the answer to Gregors kind answer, I actually
> need a way to inspect the parts of the access path in the data structure I
> import form the x.mat-file, and if I use squeeze_me=True, parts like
> 'RPDO2' disappear completely:
> > >
> >
> > The substruct names are somewhat hidden, try this:
> >
> > y = scipy.io.loadmat('x.mat', squeeze_me=True, struct_as_record=False)
> > y['CanData'].msg._fieldnames
> >
> > ['RPDO2']
> >
> > Gregor
> >
> > PS: for introspection of objects, just take a look at the __dict__
> attribute.
> >
> > >
> > > import scipy.io <http://scipy.io/> <http://scipy.io/ <http://scipy.io/
> >>
> > >
> > > y = scipy.io.loadmat("x.mat", squeeze_me=True)
> > > cd = y['CanData']
> > > msg = cd['msg']
> > > print msg
> > >
> > > Output:
> > > ((array(((array([ 61.96,  61.96,  61.96]), u'PosAct'), (array([-0.05,
> -0.1 ,  0.3 ]), u'VelAct')),
> > >       dtype=[('PosAct', 'O'), ('VelAct', 'O')]), array([ 0.      ,
> 0.003968,  0.007978])),)
> > >
> > > And I really need to be able to find it by some kind of inspection, so
> that I don't return parts of the structure that don't correspond to the
> intention of the person searching.
> > >
> > > Thanks once again!
> > >
> > > Nenad
> > >
> > >
> > >
> > > 2017-02-22 18:00 GMT+01:00 <scipy-user-request at python.org <mailto:
> scipy-user-request at python.org> <mailto:scipy-user-request at python.org
> <mailto:scipy-user-request at python.org>>>:
> > > Send SciPy-User mailing list submissions to
> > >         scipy-user at python.org <mailto:scipy-user at python.org> <mailto:
> scipy-user at python.org <mailto:scipy-user at python.org>>
> > >
> > > To subscribe or unsubscribe via the World Wide Web, visit
> > >         https://mail.python.org/mailman/listinfo/scipy-user <
> https://mail.python.org/mailman/listinfo/scipy-user> <
> https://mail.python.org/mailman/listinfo/scipy-user <
> https://mail.python.org/mailman/listinfo/scipy-user>>
> > > or, via email, send a message with subject or body 'help' to
> > >         scipy-user-request at python.org <mailto:scipy-user-request@
> python.org> <mailto:scipy-user-request at python.org <mailto:
> scipy-user-request at python.org>>
> > >
> > > You can reach the person managing the list at
> > >         scipy-user-owner at python.org <mailto:scipy-user-owner@
> python.org> <mailto:scipy-user-owner at python.org <mailto:scipy-user-owner@
> python.org>>
> > >
> > > When replying, please edit your Subject line so it is more specific
> > > than "Re: Contents of SciPy-User digest..."
> > >
> > >
> > > Today's Topics:
> > >
> > >    1. Re: How to handle a scipy.io.loadmat - related bug: parts of
> > >       the data inaccessible after loadmat (Jason Sachs)
> > >
> > >
> > > ----------------------------------------------------------------------
> > >
> > > Message: 1
> > > Date: Wed, 22 Feb 2017 09:12:26 -0700
> > > From: Jason Sachs <jmsachs at gmail.com <mailto:jmsachs at gmail.com>
> <mailto:jmsachs at gmail.com <mailto:jmsachs at gmail.com>>>
> > > To: SciPy Users List <scipy-user at python.org <mailto:
> scipy-user at python.org> <mailto:scipy-user at python.org <mailto:
> scipy-user at python.org>>>
> > > Subject: Re: [SciPy-User] How to handle a scipy.io.loadmat - related
> > >         bug: parts of the data inaccessible after loadmat
> > > Message-ID:
> > >         <CAOo6sOPTMBfRATCHmoGTN8NsKcn+86dCY7fUxzB0XXcd0gZh3w at mail.
> gmail.com <mailto:CAOo6sOPTMBfRATCHmoGTN8NsKcn%
> 2B86dCY7fUxzB0XXcd0gZh3w at mail.gmail.com> <mailto:CAOo6sOPTMBfRATCHmoGTN
> 8NsKcn%2B86dCY7fUxzB0XXcd0gZh3w at mail.gmail.com <mailto:
> CAOo6sOPTMBfRATCHmoGTN8NsKcn%252B86dCY7fUxzB0XXcd0gZh3w at mail.gmail.com>>>
> > > Content-Type: text/plain; charset="utf-8"
> > >
> > > ah, yes, here it is:
> > >
> > > https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/io.html <
> https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/io.html> <
> https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/io.html <
> https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/io.html>>
> > >
> > > ----
> > >
> > > So, in MATLAB, the struct array must be at least 2D, and we replicate
> that
> > > when we read into Scipy. If you want all length 1 dimensions squeezed
> out,
> > > try this:
> > > >>>
> > >
> > > >>> mat_contents = sio.loadmat('octave_struct.mat',
> squeeze_me=True)>>> oct_struct = mat_contents['my_struct']>>>
> oct_struct.shape()
> > >
> > >
> > > On Wed, Feb 22, 2017 at 9:11 AM, Jason Sachs <jmsachs at gmail.com
> <mailto:jmsachs at gmail.com> <mailto:jmsachs at gmail.com <mailto:
> jmsachs at gmail.com>>> wrote:
> > >
> > > > This looks familiar, I ran into this a few years ago, and if I recall
> > > > correctly, there is an option to loadmat to reduce array dimensions
> > > > appropriately. There is a "squeeze_me" option (unfortunately named...
> > > > should probably be deprecated in favor of  "squeeze") which I think
> does
> > > > this.
> > > >
> > > > https://docs.scipy.org/doc/scipy/reference/generated/
> scipy.io.loadmat.html <https://docs.scipy.org/doc/
> scipy/reference/generated/scipy.io.loadmat.html> <
> https://docs.scipy.org/doc/scipy/reference/generated/scipy.io.loadmat.html
> <https://docs.scipy.org/doc/scipy/reference/generated/
> scipy.io.loadmat.html>>
> > > >
> > > > On Wed, Feb 22, 2017 at 9:02 AM, Gregor Thalhammer <
> > > > gregor.thalhammer at gmail.com <mailto:gregor.thalhammer at gmail.com>
> <mailto:gregor.thalhammer at gmail.com <mailto:gregor.thalhammer at gmail.com>>>
> wrote:
> > > >
> > > >>
> > > >> Am 22.02.2017 um 12:02 schrieb Propadovic Nenad <
> npropadovic at gmail.com <mailto:npropadovic at gmail.com> <mailto:
> npropadovic at gmail.com <mailto:npropadovic at gmail.com>>>:
> > > >>
> > > >> Hello,
> > > >>
> > > >> bear with me for the long post that follows: it took me more than a
> week
> > > >> to get this far, and I tried to compress all the relevant
> information into
> > > >> the post.
> > > >>
> > > >> There seems to be a bug in scipy.io.loadmat; I'll present it by a
> short
> > > >> piece of code and it's output.
> > > >>
> > > >> I create file x.mat with the following:
> > > >>
> > > >> import scipy.io <http://scipy.io/> <http://scipy.io/ <
> http://scipy.io/>>
> > > >>
> > > >> d = {'CanData':
> > > >>     {
> > > >>     'msg': {
> > > >>             'RPDO2': {
> > > >>                 'timest': [0.0, 0.0039679999899817631,
> > > >> 0.0079779999941820279],
> > > >>                 'sig': {
> > > >>                     'VelAct': {
> > > >>                         'Values': [-0.050000000000000003,
> > > >> -0.10000000000000001, 0.29999999999999999, ],
> > > >>                         'Name': 'VelAct'
> > > >>                     },
> > > >>                     'PosAct': {
> > > >>                         'Values': [61.960000000000001,
> > > >> 61.960000000000001, 61.960000000000001, ],
> > > >>                         'Name': 'PosAct'
> > > >>                     }
> > > >>                 }
> > > >>             }
> > > >>         }
> > > >>     }
> > > >> }
> > > >> scipy.io.savemat("x.mat", d)
> > > >>
> > > >> Matlab is happy with the file and handles it the way I expect.
> > > >>
> > > >> When I read in the data stored in the file and print it out:
> > > >>
> > > >> import scipy.io <http://scipy.io/> <http://scipy.io/ <
> http://scipy.io/>>
> > > >> y = scipy.io.loadmat("x.mat")
> > > >> # print y
> > > >> cd = y['CanData']
> > > >> msg = cd['msg']
> > > >> print msg
> > > >> print msg.dtype
> > > >> print msg.dtype.names
> > > >>
> > > >> The output is:
> > > >> >C:\Anaconda2\pythonw -u "test1.py"
> > > >> [[ array([[ ([[(array([[ ([[(array([[ 61.96,  61.96,  61.96]]),
> > > >> array([u'PosAct'],
> > > >>       dtype='<U6'))]], [[(array([[-0.05, -0.1 ,  0.3 ]]),
> > > >> array([u'VelAct'],
> > > >>       dtype='<U6'))]])]],
> > > >>       dtype=[('PosAct', 'O'), ('VelAct', 'O')]), array([[ 0.      ,
> > > >> 0.003968,  0.007978]]))]],)]],
> > > >>       dtype=[('RPDO2', 'O')])]]
> > > >> object
> > > >> None
> > > >>
> > > >> Now  I've read the manual, and as I see it I have no way for me to
> access
> > > >> the deeper layers of data I just put in the file x.mat, although
> they are
> > > >> obviously right there in the data read in. Access via msg['RPDO2']
> gives:
> > > >> IndexError: only integers, slices (`:`), ellipsis (`...`),
> numpy.newaxis
> > > >> (`None`) and integer or boolean arrays are valid indices.
> > > >>
> > > >>
> > > >> For historic reasons, in Matlab everything is at least a 2D array,
> even
> > > >> scalars. By sprinkling some [0,0] in your code you should get what
> you
> > > >> want, e.g.
> > > >>
> > > >> msg[0,0]['RPDO2'][0,0]['timest'][0,0]
> > > >>
> > > >> array([[ 0.      ,  0.003968,  0.007978]])
> > > >>
> > > >>
> > > >> Gregor
> > > >>
> > > >>
> > > >>
> > > >> If I use parameter squeeze_me=True:
> > > >>
> > > >> scipy.io.savemat("x.mat", d)
> > > >> y = scipy.io.loadmat("x.mat", squeeze_me=True)
> > > >> # print y
> > > >> cd = y['CanData']
> > > >> msg = cd['msg']
> > > >> print msg
> > > >> print msg.dtype
> > > >> print msg.dtype.names
> > > >>
> > > >> I get output:
> > > >> >C:\Anaconda2\pythonw -u "test1.py"
> > > >> ((array(((array([ 61.96,  61.96,  61.96]), u'PosAct'),
> (array([-0.05,
> > > >> -0.1 ,  0.3 ]), u'VelAct')),
> > > >>       dtype=[('PosAct', 'O'), ('VelAct', 'O')]), array([ 0.      ,
> > > >> 0.003968,  0.007978])),)
> > > >> object
> > > >> None
> > > >> >Exit code: 0
> > > >>
> > > >> All well, but the name 'RPDO2' disapeared from the data!
> > > >>
> > > >> Now I need this information; in future I won't handle what's put
> into
> > > >> x.mat, so I need a way to access through the data all the way down
> (and
> > > >> handle the variations that will come).
> > > >>
> > > >> I have found a workaround at:
> > > >> http://stackoverflow.com/questions/7008608/scipy-io-loadmat- <
> http://stackoverflow.com/questions/7008608/scipy-io-loadmat-> <
> http://stackoverflow.com/questions/7008608/scipy-io-loadmat- <
> http://stackoverflow.com/questions/7008608/scipy-io-loadmat->>
> > > >> nested-structures-i-e-dictionaries/
> > > >>
> > > >> The problem is, the workaround uses struct_as_record=False in
> loadmat,
> > > >> and which boils down to using scipy.io.matlab.mio5_params.ma <
> http://scipy.io.matlab.mio5_params.ma/>t_struct,
> > > >> and when you read the docstring of class mat_struct, it says:
> > > >>
> > > >> '''
> > > >> ...
> > > >> We deprecate this method of holding struct information, and will
> > > >> soon remove it, in favor of the recarray method (see loadmat
> > > >> docstring)
> > > >> '''
> > > >> So my questions:
> > > >> 1) Did I miss something? Is there a way to access the data in
> 'RPDO2' by
> > > >> using this name, without using parameter struct_as_record=False in
> loadmat?
> > > >> 2) If not, where do I file a bug? The workaround is five years old,
> so
> > > >> the issue seems to be in scipy for ages...
> > > >>
> > > >> (For the records, I use scipy within Anaconda2 1.4.1, under
> Windows, but
> > > >> this does not seem to matter).
> > > >>
> > > >> Thanks a lot for the answers, in advance.
> > > >>
> > > >> Nenad
> > > >>
> > > >>
> > > >> _______________________________________________
> > > >> SciPy-User mailing list
> > > >> SciPy-User at python.org <mailto:SciPy-User at python.org> <mailto:
> SciPy-User at python.org <mailto:SciPy-User at python.org>>
> > > >> https://mail.python.org/mailman/listinfo/scipy-user <
> https://mail.python.org/mailman/listinfo/scipy-user> <
> https://mail.python.org/mailman/listinfo/scipy-user <
> https://mail.python.org/mailman/listinfo/scipy-user>>
> > > >>
> > > >>
> > > >>
> > > >> _______________________________________________
> > > >> SciPy-User mailing list
> > > >> SciPy-User at python.org <mailto:SciPy-User at python.org> <mailto:
> SciPy-User at python.org <mailto:SciPy-User at python.org>>
> > > >> https://mail.python.org/mailman/listinfo/scipy-user <
> https://mail.python.org/mailman/listinfo/scipy-user> <
> https://mail.python.org/mailman/listinfo/scipy-user <
> https://mail.python.org/mailman/listinfo/scipy-user>>
> > > >>
> > > >>
> > > >
> > > -------------- next part --------------
> > > An HTML attachment was scrubbed...
> > > URL: <http://mail.python.org/pipermail/scipy-user/
> attachments/20170222/e992b074/attachment-0001.html <
> http://mail.python.org/pipermail/scipy-user/attachments/20170222/e992b074/
> attachment-0001.html> <http://mail.python.org/pipermail/scipy-user/
> attachments/20170222/e992b074/attachment-0001.html <
> http://mail.python.org/pipermail/scipy-user/attachments/20170222/e992b074/
> attachment-0001.html>>>
> > >
> > > ------------------------------
> > >
> > > Subject: Digest Footer
> > >
> > > _______________________________________________
> > > SciPy-User mailing list
> > > SciPy-User at python.org <mailto:SciPy-User at python.org> <mailto:
> SciPy-User at python.org <mailto:SciPy-User at python.org>>
> > > https://mail.python.org/mailman/listinfo/scipy-user <
> https://mail.python.org/mailman/listinfo/scipy-user> <
> https://mail.python.org/mailman/listinfo/scipy-user <
> https://mail.python.org/mailman/listinfo/scipy-user>>
> > >
> > >
> > > ------------------------------
> > >
> > > End of SciPy-User Digest, Vol 162, Issue 6
> > > ******************************************
> > >
> > > _______________________________________________
> > > SciPy-User mailing list
> > > SciPy-User at python.org <mailto:SciPy-User at python.org>
> > > https://mail.python.org/mailman/listinfo/scipy-user <
> https://mail.python.org/mailman/listinfo/scipy-user>
> >
> > -------------- next part --------------
> > An HTML attachment was scrubbed...
> > URL: <http://mail.python.org/pipermail/scipy-user/
> attachments/20170224/46a54c05/attachment.html <http://mail.python.org/
> pipermail/scipy-user/attachments/20170224/46a54c05/attachment.html>>
> >
> > ------------------------------
> >
> > Subject: Digest Footer
> >
> > _______________________________________________
> > SciPy-User mailing list
> > SciPy-User at python.org <mailto:SciPy-User at python.org>
> > https://mail.python.org/mailman/listinfo/scipy-user <
> https://mail.python.org/mailman/listinfo/scipy-user>
> >
> >
> > ------------------------------
> >
> > End of SciPy-User Digest, Vol 162, Issue 10
> > *******************************************
> >
> > _______________________________________________
> > SciPy-User mailing list
> > SciPy-User at python.org
> > https://mail.python.org/mailman/listinfo/scipy-user
>
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://mail.python.org/pipermail/scipy-user/
> attachments/20170224/0650188b/attachment.html>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at python.org
> https://mail.python.org/mailman/listinfo/scipy-user
>
>
> ------------------------------
>
> End of SciPy-User Digest, Vol 162, Issue 13
> *******************************************
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scipy-user/attachments/20170227/143c267b/attachment-0001.html>


More information about the SciPy-User mailing list