Pythonic方式简单的数组处理

时间:2014-03-15 07:48:53

标签: python numpy

import numpy as np
data = np.array([[2,0,1,2,0],[0,1,2,0,1],[2,0,1,2,2]])

我要求以下三个作为单独的变量

class0 = np.where(data==0)
class1 = np.where(data==1)
class2 = np.where(data==2)

我知道如何用三行来写它们。 但是,使用以下示例的Pythonic方法是什么:

classes = ['class0', 'class1', 'class2']
values =[0,1,2]

for x, y in zip(classes, values):
    x = np.where(data == y)
    print x

在这里我如何将x的结果命名为class0,class1,class2 ???

2 个答案:

答案 0 :(得分:1)

字典:

classes = ['class0', 'class1', 'class2']
values =[0,1,2]
output = {} #create a dictionary instance

for x, y in zip(classes, values):
    output[x] = np.where(data == y) #use the class name as the dictionary key

答案 1 :(得分:1)

如果你真的想要三个变量而不是字典,你可以这样做:

class0, class1, class2 = [np.where(data == i) for i in range(0, 3)]

这不符合您在问题中提供的示例。