当前位置: 首页 > 面试题库 >

使用Numpy ndarray进行条件索引

寿子轩
2023-03-14
问题内容

我有一个浮点值的Numpy ndarray矩阵,我需要选择特殊的行,其中某些列的值满足某些条件。例如,假设我有以下numpy矩阵:

matrix = np.ndarray([4, 5])
matrix[0,:] = range(1,6)
matrix[1,:] = range(6,11)
matrix[2,:] = range(11,16)
matrix[3,:] = range(16,21)

可以说我要从矩阵中选择行,其中第一列的值在1到6之间,第二列的值在2到7之间。

如何获得满足这些条件的矩阵的行索引?如果要删除满足条件条件的行怎么办?


问题答案:

对于基于numpy的解决方案,您可以使用numpy.where,然后从中获取行索引,然后将其用于为矩阵建立索引。范例-

matrix[np.where((1 <= matrix[:,0]) & (matrix[:,0] <= 6)
       & (2 <= matrix[:,1]) & (matrix[:,1] <= 7))]

演示-

In [169]: matrix
Out[169]:
array([[  1.,   2.,   3.,   4.,   5.],
       [  6.,   7.,   8.,   9.,  10.],
       [ 11.,  12.,  13.,  14.,  15.],
       [ 16.,  17.,  18.,  19.,  20.]])

In [170]: matrix[np.where((1 <= matrix[:,0]) & (matrix[:,0] <= 6)
   .....:        & (2 <= matrix[:,1]) & (matrix[:,1] <= 7))]
Out[170]:
array([[  1.,   2.,   3.,   4.,   5.],
       [  6.,   7.,   8.,   9.,  10.]])

如注释中所示,另一种方法是使用布尔掩码,例如-

mask = ((1 <= matrix[:,0]) & (matrix[:,0] <= 6)
           & (2 <= matrix[:,1]) & (matrix[:,1] <= 7))

matrix[mask,:]

演示-

In [41]: matrix
Out[41]:
array([[  1.,   2.,   3.,   4.,   5.],
       [  6.,   7.,   8.,   9.,  10.],
       [ 11.,  12.,  13.,  14.,  15.],
       [ 16.,  17.,  18.,  19.,  20.]])

In [42]: mask = ((1 <= matrix[:,0]) & (matrix[:,0] <= 6)
   ....:            & (2 <= matrix[:,1]) & (matrix[:,1] <= 7))

In [43]:

In [43]: matrix[mask,:]
Out[43]:
array([[  1.,   2.,   3.,   4.,   5.],
       [  6.,   7.,   8.,   9.,  10.]])


 类似资料:
  • 问题内容: 我在Postgres 11.3数据库中有一个带有列的表。 尝试更新嵌套数组名称中的所有对象。 如果路径是对象,则应将路径从对象更新为具有以下值的字符串: 如果不存在该路径,则该对象应保持不变。 使用查询测试设置:小提琴链接 所需结果: 我已经修改了查询并链接到小提琴中。有人可以看看是否正确吗? 问题答案: 平原应该有所作为。 db <>在这里 拨弄 (Postgres 11!) 为了同

  • 问题内容: 我有一个不时更新数据集的数据库。在这里,可能发生的是交付了数据库中已经存在的数据集。 目前,我首先要做的是 检查是否已经存在具有这些数据的数据集(使用WHERE语句中的数据)。如果没有返回任何值,则说明我正在执行INSERT。 但这对我来说似乎有点复杂。所以我的问题是:是否有某种条件式INSERT仅在不存在新数据集的情况下才添加它? 我正在使用 SmallSQL 问题答案: 您几乎可以

  • 在一个有四列的大数据框(“myfile”)中,我必须添加第五列,其中的值有条件地基于前四列。 更喜欢使用和的答案,主要是因为它在大型数据集中的速度。 我的数据框如下所示: 第五列(V5)的值基于一些条件规则: 现在我想使用函数在所有行上使用这些规则(以避免慢循环)。类似这样的事情(是的,我知道这样不行!): 结果应该是: 如何在dplyr中执行此操作?

  • 我想使用条件查询。 这是我的问题 这是我的java代码 它给出

  • 我有一个数据框架,看起来像这样: 我想对数据帧进行切片,以便结果包含所有以<code>foo 获得此结果的一种方法是 但这感觉像是一个非常繁琐的方法,必须有一个更“pythonic”的方法..

  • 问题内容: 我想使用ElasticSearch搜索文件名(而不是文件的内容)。因此,我需要找到文件名的一部分(完全匹配,没有模糊搜索)。 示例: 我有以下名称的文件: 现在,我要搜索以获取前两个文件。 搜索或应返回除最后一个文件名以外的所有文件名。 如何使用ElasticSearch做到这一点? 这是我测试过的,但始终返回零结果: 问题答案: 您粘贴的内容存在各种问题: 1)不正确的映射 创建索引

  • 问题内容: 我正在使用的Web应用程序偶尔会为某些用户带来数据完整性问题。我想打开跟踪级别的日志记录,但是由于我们每秒要处理100个请求,因此每个日志记录都是不可能的。 log4j是否可以有条件地记录日志?换句话说,我希望仅在特定用户发出请求时才能获得跟踪日志。由于我事先不知道哪些用户会受到影响,因此我无法简单地临时对用户名进行硬编码。 编辑: 我想我需要更清楚一点。我可以轻松地在日志语句中添加条

  • 问题内容: 我有两个实体:和。我正在使用Hibernate 3.6。 如何使用hibernate标准实现这一目标,最重要的是,我必须将其用于分页。 而“我的道”如下所示以显示jqgrid中的“问题”列表 公共列表showHelpDeskIssues(DetachedCriteria dc,int from,int size){ 问题答案: 您可以尝试以下 这里parent是中的属性名称,child