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

在numpy中将非常低的值设置为零

许阿苏
2023-03-14
问题内容

在numpy中我有一个数组

[0 +  0.5j, 0.25 + 1.2352444e-24j, 0.25+ 0j, 2.46519033e-32 + 0j]

将超低值设置为零的最快,最简单的方法是什么

[0 +  0.5j, 0.25 + 0j, 0.25+ 0j, 0 + 0j]

效率不是最重要的。


问题答案:

嗯 我对此并不满意,但这似乎可行:

>>> a = np.array([0 +  0.5j, 0.25 + 1.2352444e-24j, 0.25+ 0j, 2.46519033e-32 + 0j])
>>> a
array([  0.00000000e+00 +5.00000000e-01j,
         2.50000000e-01 +1.23524440e-24j,
         2.50000000e-01 +0.00000000e+00j,   2.46519033e-32 +0.00000000e+00j])
>>> tol = 1e-16
>>> a.real[abs(a.real) < tol] = 0.0
>>> a.imag[abs(a.imag) < tol] = 0.0
>>> a
array([ 0.00+0.5j,  0.25+0.j ,  0.25+0.j ,  0.00+0.j ])

您可以根据自己的问题选择容忍度。我通常使用一个数量级以上

>>> np.finfo(np.float).eps
2.2204460492503131e-16

但这取决于问题。



 类似资料:
  • 我有一个2d numpy数组(28x28),希望将随机值设置为值小于50的所有索引。我尝试了一些方法: 这并不正确,因为所有选择的指数都获得相同的随机值。我想要不同的随机值。 上面的代码解决了这个问题,但我认为它不能有效地工作,因为它在处理大数据集时变得非常慢。 有没有更好的功能?

  • 问题内容: 我想在numpy数组中设置特定值(以将它们从按行均值计算中排除)。 我试过了 看着,我只会看到我的期望。 我想到了一个替代方案: 没发生什么事。我究竟做错了什么? 问题答案: 将适当元素设置为NaN的矢量化方法 @unutbu的解决方案必须摆脱您得到的值错误。如果您希望获得性能,可以这样使用- 样品运行- 向量化方法可直接计算适当元素的按行平均值 如果要获取掩盖的平均值,则可以修改较早

  • 问题内容: 我希望将值设置为如果我提交的表单中的文本框未放入任何内容。我怎样才能做到这一点?我尝试插入,但这只是将单词添加到字段中。 我不确定应该为此提供什么代码,我只是在编写UPDATE查询。 问题答案: 不要在更新语句中加引号。这应该工作:

  • 问题内容: 我们都知道Java在(被认为是“常用” )范围内为数字缓存(以及一些其他类型)。 缓存的设计如下: 我知道可以通过为JVM提供参数来扩展值: 我不明白的是为什么我们不允许覆盖该值? 请注意,我并不是想找到一种解决方法,而是要理解为什么出于某些晦涩的原因而不允许这样做。 问题答案: 发现对此已经存在未解决的RFP。 乔·达西(Joe Darcy)对这个问题发表了评论: 可以想象也可以缓存

  • 我正在开发一个遗留系统,它有一个自定义的异常,到处都使用gosh frickity。它受到了ServletException类的启发,该类表示“好的,每当您的Servlet中出现异常时,您都会希望抛出此ServletException”。 随着系统的发展(超过10年),一个在更高级别捕获异常的更强大的系统已经出现,不再需要将每个异常都包装在这个自定义异常中。(有人可能会说从来没有,但那是另一回事。

  • 我在将JDialog设置为非模态时遇到问题。我需要在不阻止应用程序其余部分的情况下显示弹出窗口。我尝试使用SwingUtilities.invoke稍后(),但顾名思义,它是在主线程工作完成后很久才调用的。为了简化,这是我的代码: 对话框会显示出来,但它是空的。如果我将其用作模式,它会显示得很好。我尝试在某些变体中使用它,例如: 但是正如我所说,对话框对我来说调用得太晚了。(我也尝试了调用和等待,