当前位置: 首页 > 知识库问答 >
问题:

从Numpy数组中删除无的有效方法

宇文鸿振
2023-03-14

有没有一个有效的方法来删除Nones从Numpy数组和调整数组到它的新大小?

例如,如何在不在python中迭代的情况下从这个框架中删除None。我可以很容易地对它进行迭代,但正在处理一个可能被多次调用的api调用。

a = np.array([1,45,23,23,1234,3432,-1232,-34,233,None])

共有2个答案

邴姚石
2023-03-14

我使用了以下比公认答案更简单的方法:

a = a[a != None]

注意:PEP8警告不要将等号操作符与单件(如)一起使用。当我发布这个答案时,我并不知道这件事。也就是说,对于Numpy数组,我发现这太Pythonic和漂亮了,不能不使用。见评论中的讨论。

俞俊逸
2023-03-14
In [17]: a[a != np.array(None)]
Out[17]: array([1, 45, 23, 23, 1234, 3432, -1232, -34, 233], dtype=object)

上面的作品因为a!=np.array(无)是一个布尔数组,它映射非无值:

In [20]: a != np.array(None)
Out[20]: array([ True,  True,  True,  True,  True,  True,  True,  True,  True, False], dtype=bool)

以这种方式选择数组元素称为布尔数组索引。

 类似资料:
  • 问题内容: 我有一个可能看起来像这样的数组: ANOVAInputMatrixValuesArray = [[ 0.96488889, 0.73641667, 0.67521429, 0.592875, 0.53172222], [ 0.78008333, 0.5938125, 0.481, 0.39883333, 0.]] 请注意,其中一行的结尾处为零。我想删除任何包含零的行,同时保留所有包含非

  • 问题内容: 我已经开发了像这样的数组列表 现在我的问题是:如果我想从列表中删除“ 8”,哪种方法更好? 第一种方式: 第二种方式: 现在,请从性能的角度建议其中哪一个效率更高,速度更快,并且还有其他任何类似于内置函数的方法,通过使用它,我们可以删除重复项而无需进行过多迭代。 问题答案: 在性能方面,它们应该相似。你测试了吗 如果要使用内置方法,则可以达到类似的性能(通过测试确认): 最后,如果您想

  • 问题内容: 我有一个尺寸为(48,366,3)的numpy数组,我想从数组中删除最后一列以使其为(48,365,3)。最好的方法是什么?(所有条目都是整数。我使用的是Python v2.6) 问题答案: 您可以尝试: http://docs.scipy.org/doc/numpy/reference/generated/numpy.delete.html 或者只是获取所需的数组切片并将其写入新数组

  • 问题内容: 我有两个numpy数组: 我想从p_rem中的p_a_colors中删除所有列,所以我得到: 我认为,某些事情应该像 但我只是不知道轴或[:]正确。 我知道 可以,但是我试图避免(python)循环,因为我也想要正确的性能。 问题答案: 这就是我要做的: 您需要执行void dtype事情,以便numpy整体比较行。之后,使用内置的set例程似乎是显而易见的方法。

  • 问题内容: 我有一个numpy值数组: 我想从数组中删除具有重复值的行。例如,上述数组的结果应为: 我不确定如何使用numpy有效地做到这一点而无需循环(数组可能会很大)。有人知道我该怎么做吗? 问题答案: 这是一个选择:

  • 问题内容: 信不信由你,在分析当前代码后,numpy数组还原的重复操作将占用大量的运行时间。我现在拥有的是基于视图的常见方法: 还有其他方法可以更有效地执行此操作,还是我对不切实际的numpy性能的痴迷所致的幻觉? 问题答案: 创建时,您正在创建原始数组的视图。然后,您可以更改原始数组,并且视图将更新以反映所做的更改。 您是否经常需要重新创建视图?您应该能够执行以下操作: 我不是numpy专家,但