选择后用非numpy数组屏蔽numpy数组

2024-05-13 22:51:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

# unicorns is a numpy array with several fields
idx = (1, 2, 3, 5, 7)
unicorns=uni[idx]
# now i have only the first, second, third, ... unicorn
print unicorns

但是如果我想再选择这个独角兽阵列

^{pr2}$

这应该能告诉我白色独角兽的名字,纽比只解释 color==white部分为False,它转到0并返回数组的第一个条目。在

我怎么能修正这个代码,让它做我想要它做的,选择白色独角兽?在

我希望所有的东西都保持numpy,这样我也可以选择独角兽的其他属性。在

编辑

以下是阵列的示例:

    unicorns=[(1, black, 0.0, 'Pinky', 1) (2, black, 0.0, 'Winky', 1)
 (3, white, 0.0, 'Lala', 1) (4, white, 0.0, 'Merlin', 1)
 (5, black, 0.0, 'Meriva', 1) (6, white, 0.0, 'Panda', 1)]
    idx = [  0 ,  3  , 6 ] 

Tags: 代码numpyfieldsiswitharraynowuni
3条回答

您可能想要使用的是^{}函数。 这样使用:

    >>>unicorns=np.array([[1, "black", 0.0, 'Pinky', 1] ,
                       [2, "black", 0.0, 'Winky', 1],
                       [3, "white", 0.0, 'Lala', 1],
                       [4, "white", 0.0, 'Merlin', 1],
                       [5, "black", 0.0, 'Meriva', 1],
                       [6, "white", 0.0, 'Panda', 1]])
    >>> np.where(unicorns[:,1] == "black")
    (array([0, 1, 4]),)
    >>> unicorns[np.where(unicorns[:,1] == "black")]
    array([['1', 'black', '0.0', 'Pinky', '1'],
    ['2', 'black', '0.0', 'Winky', '1'],
    ['5', 'black', '0.0', 'Meriva', '1']], 
    dtype='|S8')

您还可以看看pandas,它对于此类切片和查询操作来说非常棒。你的问题可以这样解决:

In [12]: df = pd.DataFrame(unicorns)

In [13]: df.columns = ['id','color','speed','name','tails']

In [14]: df
Out[14]: 
  id  color speed    name tails
0  1  black   0.0   Pinky     1
1  2  black   0.0   Winky     1
2  3  white   0.0    Lala     1
3  4  white   0.0  Merlin     1
4  5  black   0.0  Meriva     1
5  6  white   0.0   Panda     1

In [16]: df[df.color == 'black']
Out[16]: 
  id  color speed    name tails
0  1  black   0.0   Pinky     1
1  2  black   0.0   Winky     1
4  5  black   0.0  Meriva     1

In [17]: df[df.color == 'black'].name
Out[17]: 
0     Pinky
1     Winky
4    Meriva
Name: name

我不得不稍微修改一下数组,使之成为有效的Python代码。如果我正确地转换了它,那么我想你要找的是:

unicorns[unicorns['color'] == 'white']['name']

^{pr2}$

相关问题 更多 >