numpy中数组的布尔类索引

第一次看到这样的用法,写几行看一下是怎么用的

#!/usr/bin/env python
# coding: utf-8

# In[1]:


import numpy as np


# In[2]:


outdegrees = np.array([1,2,0,3,0,4,0])
masks = (outdegrees != 0)       
# 这一步代码是把outdegrees(numpy数组)中为零的位置设为false,非零的地方设为True,产生的是一个布尔型的numpy数组
# masks = [ True  True False  True False  True False]

current_nodes = np.array([2,1,5,3,6,7,9])
print(masks)
print(current_nodes[masks])     # [2 1 3 7]
# 这里是在current_nodes中只取masks为True的对应位置的元素


# In[3]:


for i in range(len(outdegrees)):
    # not np.any(masks) masks至少存在一个True为真,全为false则为假
    if not np.any(masks):
        break
    print("1:",i)

masks = np.array([ False,False,False,False,False,False,False])
for i in range(len(outdegrees)):
    if not np.any(masks):
        break
    print("2:",i)

'''
1: 0
1: 1
1: 2
1: 3
1: 4
1: 5
1: 6
'''
# In[ ]:

 

  

posted @ 2020-12-05 17:03  +D  阅读(528)  评论(0编辑  收藏  举报