【发布时间】:2017-06-30 10:02:01
【问题描述】:
我正在编写一个读取 .fits 文件并区分明亮和黑暗图像的代码。为此,我读入图像,获取图像像素的子集,并创建一个函数来确定子集中的所有像素值是否都高于某个阈值。最后我想创建一个 .csv 文件来存储结果。
我的函数是这样写的:
def function(subset):
if np.all(subset > x):
return True
else:
return False
而且这个函数似乎可以工作,对于明亮的图像返回“True”,对于黑暗的图像返回“False”。
但是,下一部分没有。创建.csv文件的代码如下:
csv_file = open('new_file.csv', 'wb')
writer = csv.writer(csv_file)
for f in filenames:
writer.writerow([f, function(subset)])
csv_file.close()
当我将 .csv 文件作为数据框读取时,我发现函数返回没有被结转,所有文件都返回一个“真”值,无论是错误的还是正确的。这是我的数据框的显示方式:
"filename" "function result"
0 file1.fits True
1 file2.fits True
2 file3.fits True
我知道在执行函数“function(subset)”时,如果 file2.fits 是“暗”图像,它将返回值“False”。
有什么建议吗?非常感谢您的帮助!
【问题讨论】:
-
pandas 中如何使用函数?
df['result'] = df['filename'].apply(function)?如何定义子集? -
我意识到我在任何时候都没有调用过这个函数。但是,当我包含您的代码
df['result'] = df['filename'].apply(function)时,我收到错误消息:TypeError: 'bool' object is not callable,我认为这是因为我试图调用可能返回 True/False 的结果? -
没错。需要返回 True False。
标签: python-2.7 function csv pandas