我已获得以下代码:
def chunk_trades(A):
last = A[0]
new = []
for x in A.iteritems():
if np.abs((x[1]-last)/last) > 0.1:
new.append(x[1])
last = x[1]
else:
new.append(last)
s = pd.Series(new, index=A.index)
return s
有时last
可以为零。在这种情况下,我希望它能够优雅地继续进行,就像last
几乎为零一样。
最干净的方式是什么?
答案 0 :(得分:1)
只需替换你的行:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="vertex2016.mvjce.edu.bluealert.Connected"
tools:showIn="@layout/activity_connected">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@id/screenimageView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
由于首先检查左侧断言,因此不会引发异常。
答案 1 :(得分:1)
不确定你是否真的想要除以&#34;几乎为0&#34;,因为结果将是&#34;几乎无穷大&#34;,但你也可以这样做:
if last == 0:
last = sys.float_info.min
这是最小正标准化浮点数,即最接近零的值。
来源:https://docs.python.org/2/library/sys.html#sys.float_info
答案 2 :(得分:0)
如果我理解正确,当last == 0
你得到ZeroDivisionError
时,你会赢吗?如果是,请考虑使用稍微修改过的代码版本:
def chunk_trades(A):
last = A[0]
new = []
for x in A.iteritems():
try:
if np.abs((x[1]-last)/last) > 0.1:
new.append(x[1])
last = x[1]
else:
new.append(last)
except ZeroDivisionError:
eps = 1e-18 # arbitary infinitesmall number
last = last + eps
if np.abs((x[1]-last)/last) > 0.1:
new.append(x[1])
last = x[1]
else:
new.append(last)
s = pd.Series(new, index=A.index)
return s