Record arrays let you store different types of data together in one array. This helps when you want to keep related information like names, ages, and scores in one place.
Record arrays in NumPy
Start learning this pattern below
Jump into concepts and practice - no test required
import numpy as np # Define a record array with fields and types record_array = np.rec.array( [(value1, value2, ...), (value1, value2, ...)], dtype=[('field1', type1), ('field2', type2), ...] )
The dtype defines the name and type of each field.
You can access fields by name like record_array.field1.
import numpy as np # Empty record array with defined fields empty_records = np.rec.array([], dtype=[('name', 'U10'), ('age', 'i4')]) print(empty_records)
import numpy as np # Record array with one element one_record = np.rec.array([('Alice', 30)], dtype=[('name', 'U10'), ('age', 'i4')]) print(one_record) print(one_record.name) print(one_record.age)
import numpy as np # Record array with multiple elements people = np.rec.array([ ('Bob', 25), ('Carol', 40), ('Dave', 35) ], dtype=[('name', 'U10'), ('age', 'i4')]) print(people) print(people.name) print(people.age)
import numpy as np # Accessing last element print(people[-1]) print(people[-1].name) print(people[-1].age)
This program creates a record array with three people, prints it, adds a new person, and prints the updated array. Then it shows how to access each field by name.
import numpy as np # Create a record array with three people people = np.rec.array([ ('Alice', 28, 5.5), ('Bob', 34, 6.0), ('Carol', 22, 5.7) ], dtype=[('name', 'U10'), ('age', 'i4'), ('height', 'f4')]) print("Before adding new record:") print(people) # Add a new record by creating a new array with one more element new_person = np.rec.array([('Dave', 30, 5.9)], dtype=people.dtype) people = np.concatenate((people, new_person)) print("\nAfter adding new record:") print(people) # Access fields by name print("\nNames:", people.name) print("Ages:", people.age) print("Heights:", people.height)
Time complexity for accessing a field is O(1) because fields are stored separately internally.
Space complexity is similar to normal numpy arrays but slightly more due to field names.
Common mistake: Trying to add records by appending directly to the record array. Instead, create a new array and concatenate.
Use record arrays when you want structured data with named fields and mixed types. Use pandas DataFrame if you need more complex table operations.
Record arrays store mixed data types in one numpy array with named fields.
You can access data by field names like array.field.
They are useful for simple structured data and fast access in numpy.
Practice
record array in numpy?Solution
Step 1: Understand record arrays
Record arrays let you store mixed data types in one numpy array by using named fields.Step 2: Compare options
Only It allows storing different data types in one array with named fields. correctly describes this feature. Others describe unrelated features.Final Answer:
It allows storing different data types in one array with named fields. -> Option CQuick Check:
Record arrays = mixed types + named fields [OK]
- Confusing record arrays with regular numeric arrays
- Thinking record arrays sort data automatically
- Assuming record arrays compress data
'name' (string) and 'age' (integer)?Solution
Step 1: Check data and dtype matching
np.rec.array([("Alice", 25), ("Bob", 30)], dtype=[('name', 'U10'), ('age', 'i4')]) matches tuples of (string, int) with dtype [('name', 'U10'), ('age', 'i4')].Step 2: Validate other options
np.array([("Alice", 25), ("Bob", 30)], dtype=[('name', 'i4'), ('age', 'U10')]) swaps types incorrectly; C has wrong input format; A swaps field order.Final Answer:
np.rec.array([("Alice", 25), ("Bob", 30)], dtype=[('name', 'U10'), ('age', 'i4')]) -> Option AQuick Check:
Data matches dtype order and types [OK]
- Swapping field order between data and dtype
- Using wrong data types in dtype
- Passing flat list instead of list of tuples
import numpy as np
rec = np.rec.array([(1, 2.5), (3, 4.5)], dtype=[('x', 'i4'), ('y', 'f4')])
print(rec.x + rec.y)Solution
Step 1: Understand data and fields
rec.x is integer array [1, 3], rec.y is float array [2.5, 4.5].Step 2: Add integer and float arrays element-wise
Adding [1, 3] + [2.5, 4.5] results in [3.5, 7.5] as floats.Final Answer:
[3.5 7.5] -> Option DQuick Check:
1+2.5=3.5 and 3+4.5=7.5 [OK]
- Expecting integer output instead of float
- Confusing field names or types
- Thinking addition causes error
import numpy as np
rec = np.rec.array([(1, 'a'), (2, 'b')], dtype=[('num', 'i4'), ('char', 'U1')])
print(rec.num + rec.char)Solution
Step 1: Analyze the operation
rec.num is integer array, rec.char is string array.Step 2: Check addition of int and string
Adding int + string causes a TypeError in numpy.Final Answer:
You cannot add integer and string fields directly. -> Option AQuick Check:
int + string = TypeError [OK]
- Assuming dtype is wrong instead of operation
- Thinking np.rec.array is incorrect here
- Ignoring type mismatch in addition
rec with fields 'id' (int), 'score' (float), and 'passed' (bool). How do you create a new record array containing only records where passed is True and score is above 80?Solution
Step 1: Understand filtering syntax
Use boolean indexing with & for element-wise AND, parentheses needed.Step 2: Evaluate options
rec[(rec.passed) & (rec.score > 80)] correctly uses (rec.passed) & (rec.score > 80). Options B and C use Python 'or'/'and' which don't work element-wise. rec[(rec.passed) | (rec.score > 80)] uses | (OR) instead of AND.Final Answer:
rec[(rec.passed) & (rec.score > 80)] -> Option BQuick Check:
Use & with parentheses for element-wise AND [OK]
- Using 'and' or 'or' instead of '&' or '|' for arrays
- Forgetting parentheses around conditions
- Using | instead of & for AND condition
