python - RuntimeWarning:在 ushort_scalars 中遇到无效值
问题描述
我正在尝试T2
从我的文件制作地图dicom
,但我的代码遇到以下错误:
RuntimeWarning: invalid value encountered in ushort_scalars
T2 map: if math.log((I8[j][k]) / (I1[j][k])) == 0:
ExampleName.py:91: RuntimeWarning: invalid value encountered in ushort_scalars
if (3.03 - (17.85 + 14.87)) / (math.log((I8[j][k]) / (I1[j][k]))) < 0:
ExampleName.py:93: RuntimeWarning: invalid value encountered in ushort_scalars
elif (3.03-(17.85+14.87))/(math.log((I8[j][k]) / (I1[j][k]))) > 100:
ExampleName.py:96: RuntimeWarning: invalid value encountered in ushort_scalars
T2_map[j,k,i] = ((3.03-(17.85+14.87))/(math.log((I8[j][k]) / (I1[j][k]))))
[[[ 0. nan nan ... 0. 0. 0.]
这是我正在使用的代码示例:
#start of code snippet
T2_map = np.empty((number_of_segments, number_of_segments, number_of_segments))
for i in range(1, number_of_slices + 1):
if 3 + (i - 1) <= number_of_segments:
I1 = (dcm_pixel_array["array" + str(3 + (i - 1))]) * 2
else:
I1 = (dcm_pixel_array["array" + str(number_of_segments)]) * 2
if 3 + ((7 * number_of_slices) + (i - 1)) <= number_of_segments:
I8 = (dcm_pixel_array["array" + str(3 + ((7*number_of_slices) + (i-1)))]) * 2
else:
I8 = (dcm_pixel_array["array" + str(number_of_segments)]) * 2
for j in range(I1.ndim):
for k in range(I1[0].ndim):
if math.log((I8[j][k]) / (I1[j][k])) == 0:
T2_map[j,k,i] = "NAN"
else:
if (3.03 - (17.85 + 14.87)) / (math.log((I8[j][k]) / (I1[j][k]))) < 0:
T2_map[j,k,i] = 0
elif (3.03-(17.85+14.87))/(math.log((I8[j][k]) / (I1[j][k]))) > 100:
T2_map[j,k,i] = 100
else:
T2_map[j,k,i] = ((3.03-(17.85+14.87))/(math.log((I8[j][k]) / (I1[j][k]))))
#end of code snippet
澄清:number_of_segments = 288
我不确定这些错误是什么意思或如何纠正它们。欢迎任何建议。
感谢您的帮助!
解决方案
问题是我的程序在某个点被零除,所以我必须放入一个 if 语句来检查 I1 和 I8/I1 是否为零值。如果其中一个为 0,我设置 T2[j,k,i] = "NAN"。
推荐阅读
- python - Pandas 根据另一列中的值创建新列,如果 False 返回新列的先前值
- c# - 在网页上创建快捷方式以保存删除
- html - 包含较小字体大小的跨度的段落的行高不正确
- tensorflow - 对于只有 10000 个单词的字典,真正需要什么嵌入层 output_dim?
- angular - ForEach 元素确实承诺得到最终的总和
- android - TabLayout 中的第 4 个选项卡没有响应点击事件
- excel - 名称映射 - Excel
- python - 无法从 .zip 文件运行 Lambda 函数
- java - Jooq 在 DayToSecond 上的平均值
- android - Android - Google Map (V2) 在调用 CameraUpdateFactory.newLatLngBounds 后忽略填充