I have a dictionary like this:
{device1 : (news1, news2, ...), device2 : (news 2, news 4, ...)...}
How to convert them into a 2-D 0-1 matrix in python? Looks like this:
news1 news2 news3 news4
device1 1 1 0 0
device2 0 1 0 1
device3 1 0 0 1
Here is some code that will create a matrix (or 2D array) using the numpy package. Note that we have to use a list of the names in order because dictionaries do not necessarily store the keys/values in the order they are entered.
import numpy as np
dataDict = {'device1':(1,1,0,1), 'device2':(0,1,0,1), 'device3':(1,0,0,1)}
orderedNames = ['device1','device2','device3']
dataMatrix = np.array([dataDict[i] for i in orderedNames])
print dataMatrix
The output is:
[[1 1 0 1]
[0 1 0 1]
[1 0 0 1]]
Here is another choice to convert a dictionary to a matrix:
# Load library
from sklearn.feature_extraction import DictVectorizer
# Our dictionary of data
data_dict = [{'Red': 2, 'Blue': 4},
{'Red': 4, 'Blue': 3},
{'Red': 1, 'Yellow': 2},
{'Red': 2, 'Yellow': 2}]
# Create DictVectorizer object
dictvectorizer = DictVectorizer(sparse=False)
# Convert dictionary into feature matrix
features = dictvectorizer.fit_transform(data_dict)
print(features)
#output
'''
[[4. 2. 0.]
[3. 4. 0.]
[0. 1. 2.]
[0. 2. 2.]]
'''
print(dictvectorizer.get_feature_names())
#output
'''
['Blue', 'Red', 'Yellow']
'''
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.