小编Gle*_*enS的帖子

Python中导入的模块/函数的范围

我是新来的,并不是100%肯定如何提出这个问题,所以我只是潜入.我应该在我编写的每个函数的开头使用import语句,导入我需要的所有各种模块/函数该功能的范围?即

def func1()
    import os.path
    print func(2)
    do something with os.path

def func2()
    import os.path
    do something with os.path
Run Code Online (Sandbox Code Playgroud)

这会增加内存开销或其他开销,还是只是将本地名称映射到已加载对象的import语句?有没有更好的方法来做到这一点?(链接到教程等最受欢迎.我一直在寻找一段时间,但无法找到一个好的答案.)

python import scope

4
推荐指数
2
解决办法
5084
查看次数

ValueError:来自 math.acos 的数学域错误和来自 numpy.arccos 的 NaN

我看过类似的问题,但我还没有找到可以帮助我的答案。我正在尝试使用点积方法找到两个向量之间的角度。

import math as m
import numpy as np

def mag(x):
    return np.sqrt(np.sum(i**2 for i in x))

u = np.array([1,1,1])
v = np.array([-1,-1,-1])

theta = m.degrees(np.arccos(np.dot(u,v) / (mag(u) * mag(v))))
Run Code Online (Sandbox Code Playgroud)

它适用于大多数情况,但是当我将 u 和 v 设置为相距 180 度(如上所述)的向量时,我得到 ValueError: math domain error。我从 m.acos 切换到 np.arccos (如上所述),它返回 NaN 但本质上是相同的问题。我知道这是由浮点舍入错误导致的,该值略低于 -1,该值超出了 acos/arrcos 的域,但我不知道该怎么做。

print('theta = ', theta)
print('magnitude product = ', mag(u) * mag(v))
print('dot product = ', np.dot(u,v))
print('dot prod / mag prod = ', np.dot(u,v) / (mag(u) * mag(v)))
print('dot prod …
Run Code Online (Sandbox Code Playgroud)

python math numpy valueerror

2
推荐指数
1
解决办法
2392
查看次数

标签 统计

python ×2

import ×1

math ×1

numpy ×1

scope ×1

valueerror ×1