当前位置: 首页 > 编程笔记 >

numpy使用技巧之数组过滤实例代码

阳文轩
2023-03-14
本文向大家介绍numpy使用技巧之数组过滤实例代码,包括了numpy使用技巧之数组过滤实例代码的使用技巧和注意事项,需要的朋友参考一下

本文研究的主要是numpy使用技巧之数组过滤的相关内容,具体如下。

当使用布尔数组b作为下标存取数组x中的元素时,将收集数组x中所有在数组b中对应下标为True的元素。使用布尔数组作为下标获得的数组不和原始数组共享数据空间,注意这种方式只对应于布尔数组(array),不能使用布尔列表(list)。

>>> x = np.arange(5,0,-1)
>>> x
array([5, 4, 3, 2, 1])
>>> x[np.array([True, False, True, False, False])]
>>> # 下标为True的取出来,布尔数组中下标为0,2的元素为True,因此获取x中下标为0,2的元素
array([5, 3])
>>> x[[True, False, True, False, False]]#Error,这不是我们想要的结果
>>> # 如果是布尔列表,则把True当作1, False当作0,按照整数序列方式获取x中的元素
array([4, 5, 4, 5, 5])
>>> x[np.array([True, False, True, True])]
>>> # 布尔数组的长度不够时,不够的部分都当作False
array([5, 3, 2])
>>> x[np.array([True, False, True, True])] = -1, -2, -3#只修改下标为True的元素
>>> # 布尔数组下标也可以用来修改元素
>>> x
array([-1, 4, -2, -3, 1])

注意:布尔数组一般不是手工产生的,通常我们使用一条布尔表达式来得到,如:

>>> x = np.random.rand(10) # 产生一个长度为10,元素值为0-1的随机数的数组
>>> x
array([ 0.72223939, 0.921226 , 0.7770805 , 0.2055047 , 0.17567449,
    0.95799412, 0.12015178, 0.7627083 , 0.43260184, 0.91379859])
>>> x>0.5
>>> # 数组x中的每个元素和0.5进行大小比较,得到一个布尔数组,True表示x中对应的值大于0.5
array([ True, True, True, False, False, True, False, True, False, True], dtype=bool)
>>> x[x>0.5]# x>0.5是一个布尔数组
>>> # 使用x>0.5返回的布尔数组收集x中的元素,因此得到的结果是x中所有大于0.5的元素的数组
array([ 0.72223939, 0.921226 , 0.7770805 , 0.95799412, 0.7627083 ,
    0.91379859])

总结

以上就是本文关于numpy使用技巧之数组过滤实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

 类似资料:
  • 问题内容: 我想要一个numpy 2D ndarray的子​​数组(在最小和最大之间) 最小值和最大值是浮点数,以便与数组xy_dat的第一个值进行比较 xy_dat是2D numpy数组: x_displayed已正确过滤,但我丢失了第二个值(现在是一维数组): 如何在第一个值上过滤并保留另一个值? 问题答案: 您应该仅在 第一 列上执行条件: 我们在这里构造一个视图,其中仅考虑带有的第一列。现

  • 本文向大家介绍JavaScript实用代码小技巧,包括了JavaScript实用代码小技巧的使用技巧和注意事项,需要的朋友参考一下 在上次的 “Chrome DevTools 你可能不知道的小技巧” 文中,得到很多开发朋友的反馈确实不知道这些小技巧。今天,我们来聊一聊在 EcmaScript5/6+ 中的一些小技巧,欢迎评论区讨论下更多技巧。 JSON.stringify 我们平时经常会用到JSO

  • 本文向大家介绍JavaScript代码简化技巧实例解析,包括了JavaScript代码简化技巧实例解析的使用技巧和注意事项,需要的朋友参考一下 函数式编程可以使您的代码更简单。简单意味着代码易于阅读和理解,可测试和可维护。 在本文中,我描述了一些函数式编程(FP)技巧,您可以使用它们来简化代码,从而使代码更好。 摆脱临时变量和不变性原则 函数式编程倾向于不变性,这种不变性原则意味着在初始化变量之后

  • 本文向大家介绍VC小技巧汇总之5则实用小技巧,包括了VC小技巧汇总之5则实用小技巧的使用技巧和注意事项,需要的朋友参考一下 本文搜集汇总VC的5则小技巧,非常实用,对于VC程序设计有很好的参考借鉴价值,详情如下: 1.如何获取程序所在的路径 也就是获取你这个程序本身所在的路径。 在应用程序类CxxApp的头文件中定义一个变量CString m_exePath;用来放置程序的路径名,在应用程序类Cx

  • 问题内容: 我需要过滤一个数组以删除低于某个阈值的元素。我当前的代码是这样的: 问题在于,这会使用带有lambda函数(慢速)的过滤器来创建一个临时列表。 由于这是一个非常简单的操作,因此也许有一个numpy函数可以高效地完成此操作,但是我一直找不到它。 我以为实现此目的的另一种方法可能是对数组进行排序,找到阈值的索引并从该索引开始返回一个切片,但是即使对于较小的输入这会更快(而且无论如何也不会引

  • We’re going to use Sinatra in a similar manner to how we used Express in the last chapter. It will power a RESTful API supporting CRUD operations. Together with a MongoDB data store, this will allow u