w3resource

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:

NumPy: Convert a Python dictionary to a Numpy ndarray

Python-Numpy Code Editor: