我试图png在python中读取图像.该imread函数scipy被弃用,他们建议使用imageio图书馆.
但是,我宁愿限制我的外部库的使用 scipy,numpy和matplotlib图书馆.因此,使用imageio或scikit image不是我的好选择.
python中是否有任何方法scipy,numpy或者matplotlib读取图像,这些方法都没有被弃用?
当我阅读Keras 序列模型代码时,我发现它只允许模型中任何定义的层使用单个输出Sequential。我知道如何使用函数式 API(Model类)来做到这一点。
但是,我不明白为什么该Sequential模型仅限于具有单个输出的层。执行此类约束是否存在设计限制?
我在 pycharm 中使用 pytest,但是当我运行测试时,我在 pycharm 控制台中得到测试和结果乱码,这是一个示例输出:
============================= test session starts ==============================
platform linux -- Python 3.6.6, pytest-4.0.1, ....
cachedir: .pytest_cache
rootdir: ....
collecting ... collected 14 items
tests/test_ops.py::test_layer
tests/test_ops.py::test_layer_with_input_shape
tests/test_ops.py::test_layer_with_batch_input
tests/test_ops.py::test_layer_with_batch_size_and_input_shape
tests/test_ops.py::test_rshift_input_layer
tests/test_ops.py::test_rshift_input_list
tests/test_ops.py::test_rshift_two_layers
tests/test_ops.py::test_rshift_input_and_two_layers
tests/test_ops.py::test_rshift_input_and_deferred_layer
tests/test_ops.py::test_rshift_input_list_and_deferred_layer
tests/test_ops.py::test_rshift_deferred_layer_to_layer
tests/test_ops.py::test_rshift_layer_to_deferred_layer
tests/test_ops.py::test_rshift_layer_to_int
tests/test_ops.py::test_rshift_layer_to_int_with_inputs
========================== 14 passed in 1.27 seconds ===========================PASSED [ 7%]PASSED [ 14%]Tensor_rshift_layer
PASSED [ 21%]Tensor_rshift_layer
PASSED [ 28%]Tensor_rshift_layer
PASSED [ 35%]Tensor_rshift_layer
PASSED [ 42%]list_rshift_layer
PASSED [ 50%]layer_rshift_layer
PASSED [ 57%]Tensor_rshift_layer
PASSED [ 64%]layer_rshift_layer
Tensor_rshift_layer
PASSED [ 71%]layer_rshift_layer
list_rshift_layer
PASSED [ …Run Code Online (Sandbox Code Playgroud) 我正在尝试在HPC服务器上创建自己的conda python环境,并且正在发生一些非常奇怪的事情。
问题
创建新的conda环境后,似乎python在该环境中看不见自己,在使用基本环境...因此,我无法使用在新环境中安装的软件包,但可以在基本环境中看到它们。 。
这是我所做的
我按照以下步骤安装我的环境:
$ conda create -n niml pip python=3.6.5
$ source activate niml
(niml) $ conda install -c conda-forge luigi
Run Code Online (Sandbox Code Playgroud)
然后检查安装的软件包:
(niml) $ conda list
Run Code Online (Sandbox Code Playgroud)
这是我得到的非常基本的环境:
# Name Version Build Channel
botocore 1.10.61 py_0 conda-forge
ca-certificates 2018.4.16 0 conda-forge
certifi 2018.4.16 py36_0 conda-forge
docutils 0.14 py36_0 conda-forge
jmespath 0.9.3 py_1 conda-forge
libedit 3.1.20170329 h6b74fdf_2
libffi 3.2.1 hd88cf55_4
libgcc-ng 7.2.0 hdf63c60_3
libstdcxx-ng 7.2.0 hdf63c60_3
lockfile 0.12.2 py_1 conda-forge
luigi 2.7.6 py36_0 conda-forge
ncurses 6.1 hf484d3e_0
openssl …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 scipy.optimize.curve_fit 优化指数拟合。但结果并不好。我的代码是:
def func(x, a, b, c):
return a * np.exp(-b * x) + c
# xdata and data is obtain from another dataframe and their type is nparray
xdata =[36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70 ,71,72]
ydata = [4,4,4,6,6,13,22,22,26,28,38,48,55,65,65,92,112,134,171,210,267,307,353,436,669,669,818,1029,1219,1405,1617,1791,2032,2032,2182,2298,2389]
popt, pcov = curve_fit(func, xdata, ydata)
plt.plot(xdata, func(xdata, *popt), 'r-', label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt))
plt.scatter(xdata, ydata, s=1)
plt.show()
Run Code Online (Sandbox Code Playgroud)
然后我得到这样的结果:
结果表明:
pcov = [[inf inf inf] [inf inf inf] [inf inf inf]]
popt = [1 1 611.83784]
Run Code Online (Sandbox Code Playgroud)
我不知道如何让我的曲线很好地拟合。你能打招呼吗?谢谢你!
所以,我有以下代码:
half= 1/2.0
print(half)
for x in range(1,1075):
half=half/2.0
print(half)
Run Code Online (Sandbox Code Playgroud)
但是在循环的最后部分,python决定一半现在是0.0
1.265e-321
6.3e-322
3.16e-322
1.6e-322
8e-323
4e-323
2e-323
1e-323
5e-324
0.0
Run Code Online (Sandbox Code Playgroud)
我达到了python的限制吗?我是否需要安装一个包装才能更远?我不确定为什么会发生这种情况,但我认为python刚刚达到极限
我有一个这样的系列:
s = pd.Series([0, 0, 0, 1, 2, 3])
s
Out[00]:
0 0
1 0
2 0
3 1
4 2
5 0
dtype: int64
Run Code Online (Sandbox Code Playgroud)
我想计算该系列中开始和尾随零的数目。所以在这种情况下,我应该以3开始,因为在第一个非零数字之前有3个零,而在尾随零是1,因为在最后一个非零之后的序列尾部有一个零。
我到目前为止所做的
到目前为止,我的解决方案是使用累计和
sum(s.cumsum() == 0) # begenning
np.sum(np.cumsum(s.values[::-1]) == 0) # trailing
Run Code Online (Sandbox Code Playgroud)
但这对于非常大的序列(尤其是尾随零位计算)而言非常慢,我需要一种替代方法。
numpy.linspace 在开始值和结束值之间生成均匀间隔的浮点样本。
print (numpy.linspace(0.0, 1.0, num=9))
# [0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1]
print (numpy.linspace(9000.0, 1000.0, num=9))
# [9000. 8000. 7000. 6000. 5000. 4000. 3000. 2000. 1000.]
Run Code Online (Sandbox Code Playgroud)
如何在开始值和结束值之间生成指数间隔的样本?
例如,2的幂:
[0. 0.016 0.0625 0.141 0.25 0.391 0.562 0.766 1.]
Run Code Online (Sandbox Code Playgroud)
感谢您的任何建议。
假设我定义一个A带有元类的类,如下所示:
class Meta(type):
pass
class A(metaclass=Meta):
pass
Run Code Online (Sandbox Code Playgroud)
然后,当我尝试访问类的名称时,A我得到元类的名称:
A.__class__.__name__
# 'Meta'
Run Code Online (Sandbox Code Playgroud)
但是,它不应该给我A,我定义的类吗?
注意:我尝试使用A.__mro__[0].__name__,它确实给了我A,但我仍然很困惑为什么A.__class__给我元类名称。有人对此有解释吗?
我有一个类,它存储文件中的一些数据,但有时该文件不存在。
该类提供了多种方法来对数据进行计算,但如果没有找到数据,所有这些方法都会引发错误。
这是类和其中一种方法的示例:
class A:
def __init__(self, file_name):
if isfile(file_name):
with open(file_name) as f:
self.data = json.load(f)
else:
self.data = None
def get_something(self):
if self.data is None:
raise ValueError('no data')
return data['a'] + data['b']
Run Code Online (Sandbox Code Playgroud)
问题 如何摆脱每个类方法中的 if 语句。有没有办法在类或方法级别使用装饰器,这使得它看起来比分散的 if 语句更好?
python ×10
python-3.x ×3
metaclass ×2
anaconda ×1
conda ×1
decorator ×1
division ×1
exponential ×1
image ×1
keras ×1
numpy ×1
pandas ×1
pycharm ×1
pytest ×1
scipy ×1
series ×1
tensorflow ×1
virtualenv ×1