Bird
Raised Fist0
NumPydata~10 mins

Accessing fields by name in NumPy - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Accessing fields by name
Create structured array with named fields
↓
Access field by name using array['field_name'
↓
Retrieve data for that field
↓
Use or display the extracted data
We create a structured array with named fields, then access data by specifying the field name in brackets, retrieving that field's values.
Execution Sample
NumPy
import numpy as np
arr = np.array([(1, 2.0), (3, 4.0)], dtype=[('x', 'i4'), ('y', 'f4')])
print(arr['x'])
This code creates a structured array with fields 'x' and 'y', then prints the values in field 'x'.
Execution Table
StepActionCode/ExpressionResult/Value
1Create structured arraynp.array([(1, 2.0), (3, 4.0)], dtype=[('x', 'i4'), ('y', 'f4')])array([(1, 2.), (3, 4.)], dtype=[('x', '<i4'), ('y', '<f4')])
2Access field 'x'arr['x']array([1, 3], dtype=int32)
3Print field 'x'print(arr['x'])[1 3]
4Access field 'y'arr['y']array([2., 4.], dtype=float32)
5Print field 'y'print(arr['y'])[2. 4.]
6ExitNo more actionsEnd of execution
💡 All fields accessed and printed, execution ends.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 4Final
arrundefinedstructured array with fields 'x' and 'y'same arraysame arraysame array
arr['x']undefinedundefinedarray([1, 3])array([1, 3])array([1, 3])
arr['y']undefinedundefinedundefinedarray([2., 4.])array([2., 4.])
Key Moments - 2 Insights
Why do we use arr['x'] instead of arr.x to access the field?
In numpy structured arrays, fields are accessed by indexing with the field name as a string, like arr['x'], because arr.x syntax is not supported. See execution_table step 2 where arr['x'] retrieves the field.
What type of data is returned when accessing a field by name?
Accessing a field returns a numpy array containing all values for that field across records, as shown in execution_table step 2 and 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output of arr['x'] at step 2?
Aarray([(1, 2.), (3, 4.)])
Barray([2., 4.])
Carray([1, 3])
Darray([3, 1])
💡 Hint
Check the 'Result/Value' column at step 2 in the execution_table.
At which step do we first print the values of field 'y'?
AStep 3
BStep 5
CStep 2
DStep 4
💡 Hint
Look for 'Print field 'y'' in the Action column of execution_table.
If we tried to access arr['z'], what would happen?
ARaise an IndexError
BReturn all fields
CReturn an empty array
DReturn None
💡 Hint
Numpy structured arrays only allow access to defined field names as shown in variable_tracker.
Concept Snapshot
Accessing fields by name in numpy structured arrays:
- Use arr['field_name'] to get all values of that field.
- Returns a numpy array of that field's data.
- arr.field_name syntax is not supported.
- Useful for working with tabular data with named columns.
Full Transcript
This lesson shows how to access fields by name in numpy structured arrays. We create an array with named fields 'x' and 'y'. Then we access the field 'x' by using arr['x'], which returns all values in that field as a numpy array. We print these values to see the output. Similarly, we access and print the field 'y'. This method is the standard way to get data from named fields in numpy structured arrays. The key point is to use square brackets with the field name as a string. Trying to use dot notation will not work. Accessing a field returns an array of values for that field across all records. This is useful for selecting columns from structured data.

Practice

(1/5)
1. What is the correct way to access the field named 'age' from a NumPy structured array data?
easy
A. data['age']
B. data.age()
C. data[age]
D. data.get('age')

Solution

  1. Step 1: Understand structured array field access

    In NumPy, fields in structured arrays are accessed using square brackets with the field name as a string.
  2. Step 2: Identify correct syntax for field access

    The syntax data['age'] correctly accesses the 'age' field. Other options use incorrect methods or syntax.
  3. Final Answer:

    data['age'] -> Option A
  4. Quick Check:

    Field access uses square brackets with field name [OK]
Hint: Use square brackets with field name as string [OK]
Common Mistakes:
  • Using unquoted field name like data[age]
  • Calling field as a method like data.age()
  • Using data.get() which is not valid for structured arrays
2. Which of the following is the correct syntax to create a NumPy structured array with fields 'name' (string) and 'score' (integer)?
easy
A. np.array([('Alice', 90), ('Bob', 85)], dtype=[('name', 'U10'), ('score', 'i4')])
B. np.array([('Alice', 90), ('Bob', 85)], dtype={name: 'U10', score: 'i4'})
C. np.array([('Alice', 90), ('Bob', 85)], dtype=[{name: 'U10'}, {score: 'i4'}])
D. np.array([('Alice', 90), ('Bob', 85)], dtype=('name', 'U10', 'score', 'i4'))

Solution

  1. Step 1: Understand dtype format for structured arrays

    The dtype should be a list of tuples, each tuple with field name and data type.
  2. Step 2: Match correct dtype syntax

    np.array([('Alice', 90), ('Bob', 85)], dtype=[('name', 'U10'), ('score', 'i4')]) uses the correct list of tuples format: [('name', 'U10'), ('score', 'i4')]. Other options use incorrect dtype formats.
  3. Final Answer:

    np.array([('Alice', 90), ('Bob', 85)], dtype=[('name', 'U10'), ('score', 'i4')]) -> Option A
  4. Quick Check:

    dtype as list of (name, type) tuples [OK]
Hint: Use list of (field, type) tuples for dtype [OK]
Common Mistakes:
  • Using dict instead of list of tuples for dtype
  • Passing dtype as a flat tuple instead of list
  • Incorrect nested dict inside dtype list
3. Given the structured array arr = np.array([(1, 2.5), (3, 4.5)], dtype=[('x', 'i4'), ('y', 'f4')]), what is the output of arr['y']?
medium
A. [1. 3.]
B. [2.5 4.5]
C. [(1, 2.5) (3, 4.5)]
D. Error: field 'y' not found

Solution

  1. Step 1: Understand the structured array fields

    The array has two fields: 'x' (integers) and 'y' (floats). The values for 'y' are 2.5 and 4.5.
  2. Step 2: Access the 'y' field values

    Using arr['y'] returns an array of the 'y' values: [2.5, 4.5].
  3. Final Answer:

    [2.5 4.5] -> Option B
  4. Quick Check:

    arr['y'] returns float values [OK]
Hint: Access field returns array of that field's values [OK]
Common Mistakes:
  • Confusing field 'x' values with 'y'
  • Expecting full tuples instead of single field array
  • Assuming error due to wrong field name
4. What is wrong with this code snippet?
arr = np.array([(1, 2), (3, 4)], dtype=[('id', 'i4'), ('b', 'i4')])
print(arr.a)
medium
A. It raises a TypeError because dtype is incorrect.
B. It raises a SyntaxError due to missing quotes around field names.
C. It prints the array correctly without errors.
D. It raises an AttributeError because fields are accessed with brackets, not dot notation.

Solution

  1. Step 1: Check field access method

    NumPy structured array fields must be accessed using square brackets with the field name as a string, not dot notation.
  2. Step 2: Identify error from dot notation

    Using arr.a causes AttributeError because 'a' is not an attribute but a field name.
  3. Final Answer:

    It raises an AttributeError because fields are accessed with brackets, not dot notation. -> Option D
  4. Quick Check:

    Use arr['a'], not arr.a [OK]
Hint: Use brackets, not dot, to access fields [OK]
Common Mistakes:
  • Using dot notation to access fields
  • Assuming dtype syntax error
  • Expecting code to print without error
5. You have a structured array data with fields 'name' (string), 'age' (int), and 'score' (float). How do you create a new array containing only the 'name' and 'score' fields?
hard
A. data['name']['score']
B. data[['name'], ['score']]
C. data[['name', 'score']]
D. data.get(['name', 'score'])

Solution

  1. Step 1: Understand field selection syntax

    To select multiple fields, use a list of field names inside double square brackets: data[['field1', 'field2']].
  2. Step 2: Apply correct syntax to select 'name' and 'score'

    Using data[['name', 'score']] returns a new structured array with only those fields.
  3. Final Answer:

    data[['name', 'score']] -> Option C
  4. Quick Check:

    Use double brackets with list of fields [OK]
Hint: Use double brackets with list of fields to select multiple [OK]
Common Mistakes:
  • Chaining field accesses like data['name']['score']
  • Passing separate lists for each field
  • Using .get() method which does not exist