Re: structure array equivalent in Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg67207] Re: structure array equivalent in Mathematica
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Sun, 11 Jun 2006 23:08:41 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <e6gdun$ngj$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
kevin_jazz wrote:
> Like many people I imagine, I'm transitioning to Mathematica from a
> background in another system.
> One of the common data types is the structure array. Let's say I have
> an observational data set that includes pressure, temperature, and
> water vapor as a function of altitude. So, in pseudo-code I might
> define a structure as
>
> observation = {pressure: float(100), temperature: float(100),
> water_vapor: float(100)}
>
> I could then access the elements of this observation as
>
> observation.pressure
> observation.temperature, etc.
>
> Furthermore, I could aggregate these observations into a larger list, e.g.
> obs_day = {observation, observation, observation}
> to be accessed as
> obs_day[1].pressure for the first element (assuming 1-index).
Hi Kevin,
First, we create some random data. This is a list of list, 10 rows by 3
columns, that can be deemed as representing a 10 x 3 matrix of real
entries, or nested arrays.
In[3]:=
obsDay = Table[{Random[], Random[], Random[]}, {10}]
Out[3]=
{{0.733283, 0.7432, 0.449928},
{0.0446911, 0.277203, 0.780983},
{0.0453825, 0.412505, 0.0190734},
{0.497491, 0.0276473, 0.948924},
{0.924536, 0.803803, 0.969818},
{0.0614517, 0.335925, 0.462168},
{0.503749, 0.308574, 0.35449},
{0.763352, 0.312975, 0.0490268},
{0.621208, 0.0201513, 0.863047},
{0.00433568, 0.344004, 0.239168}}
Pressure recorded on the first observation of the day:
In[5]:=
obsDay[[1,1]]
Out[5]=
0.733283
Temperature recorded on the third observation of the day:
In[6]:=
obsDay[[3,2]]
Out[6]=
0.412505
The fifth record:
obsDay[[5,All]]
Out[7]=
{0.0453825, 0.412505, 0.0190734}
The fifth record again:
obsDay[[5]]
Out[8]=
{0.0453825, 0.412505, 0.0190734}
All the water_vapor recorded this day:
In[9]:=
obsDay[[All,3]]
Out[9]=
{0.449928, 0.780983, 0.0190734, 0.948924, 0.969818,
0.462168, 0.35449, 0.0490268, 0.863047, 0.239168}
> Now, the list in Mathematica is quite powerful and I think can be
> set-up in a similar fashion.
>
> So my question is how is the structure array commonly implemented in
> Mathematica or its equivalent?
>
> If there is a previous thread (I looked but didn't find any) on the
> topic or in the Mathematica book or Mathematica Journal that I missed,
> feel free to point me in that direction.
The Mathematica Book Online, A Practical Introduction to Mathematica,
Lists
http://documents.wolfram.com/mathematica/TheMathematicaBook/APracticalIntroductionToMathematica/Lists/index.en.html
The Mathematica Book Online, Part 2: Principles of Mathematica, Section
2.4: Manipulating Lists
http://documents.wolfram.com/mathematica/book/section-2.4
Built-in Functions, Lists and Matrices
http://documents.wolfram.com/mathematica/Built-inFunctions/ListsAndMatrices/
Built-in Functions / Advanced Documentation / Linear Algebra / Linear
Algebra in Mathematica / Performance / Packed Arrays
http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/LinearAlgebra/LinearAlgebraInMathematica/Performance/PackedArrays/
>
> Many thanks,
>
> Kevin Bowman
> Jet Propulsion Laboratory
>
HTH,
Jean-Marc