我正在尝试实现一种图像处理算法,该算法涉及为每个单元计算4相邻邻域的乘积.也就是说,计算X的新矩阵Y在哪里y[i, j] = x[i-1, j] * x[i, j-1] * x[i+1, j] * x[i, j+1].应忽略越界邻居.
现在我只能想到这种方法:使用scipy.ndimage.filters.correlate和传递权重用零和一个1得到四个矩阵,每个矩阵包含一个方向上每个单元格的邻居,比如传入weight = [[0, 0, 0], [1, 0, 0], [1, 1]],我得到a[i, j] = x[i-1, j],并且我可以得到其他权重b[i, j] = x[i, j-1],c[i, j] = x[i+1, j],d[i, j] = x[i, j+1].然后我np.multiply用来计算这四个矩阵的乘积.
但是,这种方法有点太慢,我不能忽视边界.有没有另一种方法来做numpy/scipy所以我不必诉诸于循环?
我得到的是这样的:
working_dir
|-- samples
|-- table1.tbl
|-- table2.tbl
|-- table3.tbl
Run Code Online (Sandbox Code Playgroud)
我想拥有的是这样的:
working_dir
|-- samples
| |-- table1.tbl
| |-- table2.tbl
| |-- table3.tbl
|-- table1.tbl
|-- table2.tbl
|-- table3.tbl
Run Code Online (Sandbox Code Playgroud)
samples目录中的.tbl文件将包含根目录中这些.tbl文件的前10行.
我试过了
for FILE in `ls *.tbl`; do
NEWFILE="samples/$FILE"
if [ ! -f "$NEWFILE" ] ; then
touch "$NEWFILE"
fi
echo `head $FILE` > $NEWFILE
done
Run Code Online (Sandbox Code Playgroud)
但是.tbl文件中的换行符samples丢失了,10行的内容被压缩到每个.tbl文件中的一行.
有帮助吗?谢谢.