NumPy: Convert a Python dictionary to a Numpy ndarray
Convert a Python dictionary to a NumPy array.
Write a NumPy program to convert a Python dictionary to a Numpy ndarray.
Sample Solution:
Python Code:
# Importing necessary libraries
import numpy as np
from ast import literal_eval
# String representation of a dictionary
udict = """{"column0":{"a":1,"b":0.0,"c":0.0,"d":2.0},
"column1":{"a":3.0,"b":1,"c":0.0,"d":-1.0},
"column2":{"a":4,"b":1,"c":5.0,"d":-1.0},
"column3":{"a":3.0,"b":-1.0,"c":-1.0,"d":-1.0}
}"""
# Converting the string dictionary to a Python dictionary
t = literal_eval(udict)
# Printing the original dictionary and its type
print("\nOriginal dictionary:")
print(t)
print("Type: ", type(t))
# Creating a 2D NumPy array using dictionary comprehension
result_nparra = np.array([[v[j] for j in ['a', 'b', 'c', 'd']] for k, v in t.items()])
# Printing the generated NumPy array and its type
print("\nndarray:")
print(result_nparra)
print("Type: ", type(result_nparra))
Sample Output:
Original dictionary: {'column0': {'a': 1, 'b': 0.0, 'c': 0.0, 'd': 2.0}, 'column1': {'a': 3.0, 'b': 1, 'c': 0.0, 'd': -1.0}, 'column2': {'a': 4, 'b': 1, 'c': 5.0, 'd': -1.0}, 'column3': {'a': 3.0, 'b': -1.0, 'c': -1.0, 'd': -1.0}} Type: <class 'dict'> ndarray: [[ 1. 0. 0. 2.] [ 3. 1. 0. -1.] [ 4. 1. 5. -1.] [ 3. -1. -1. -1.]] Type: <class 'numpy.ndarray'>
Explanation:
In the above code -
udict is a string containing a nested dictionary, where the keys of the outer dictionary are column names, and the inner dictionaries have keys 'a', 'b', 'c', and 'd' with corresponding values.
t = literal_eval(udict): literal_eval(udict) from the ast module parses the string representation of the dictionary and converts it into an actual dictionary object, which is stored in the variable t.
result_nparra = np.array([[v[j] for j in ['a', 'b', 'c', 'd']] for k, v in t.items()]): The list comprehension [[v[j] for j in ['a', 'b', 'c', 'd']] for k, v in t.items()] extracts the values from the inner dictionaries in the order 'a', 'b', 'c', 'd', and creates a list of lists.
np.array(...) converts the list of lists into a NumPy array, which is stored in the variable result_nparra.
Finally print() function prints the data and type of the NumPy array result_nparra.
Pictorial Presentation:
Python-Numpy Code Editor:
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics