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[ ]: