python - 如何从 pd.dataframe 获取 bool 值 'True' 的坐标?

标签 python python-3.x pandas dataframe coordinates

我有一个 png,我将其转换为包含 bool 值的 pd.DataFrame。对于白色像素,我得到“假”,对于黑色像素,我得到“真”。我想生成 DXF 图。为此,我试图获取数据帧上每个“True”的坐标,以便稍后连接它们以绘制线条。

这是我目前拥有的代码:

from PIL import Image
import numpy as np
import pandas as pd

img = Image.open('/home/sinushas/Downloads/Brezynio_Konvertavimas/test.png')
thresh = 200
fn = lambda x : 255 if x > thresh else 0
r = img.convert('L').point(fn, mode='1')
r.save('/home/sinushas/Downloads/Brezynio_Konvertavimas/test_converted.png')

im = Image.open('/home/sinushas/Downloads/Brezynio_Konvertavimas/test_converted.png')
im2arr = np.array(im) # im2arr.shape: height x width x channel

df = pd.DataFrame(im2arr)
df = (df == False) 

这是生成的 pd.Dataframe:

    0   1   2   3   4   5   6   7   8   9
0   False   False   False   False   False   False   False   False   False   False
1   False   False   False   False   False   False   False   False   False   False
2   False   False   True    True    True    True    True    True    False   False
3   False   False   False   False   True    True    False   False   False   False
4   False   False   False   False   True    True    False   False   False   False
5   False   False   False   False   True    True    False   False   False   False
6   False   False   False   False   True    True    False   False   False   False
7   False   False   False   False   False   False   False   False   False   False
8   False   False   False   False   False   False   False   False   False   False
9   False   False   False   False   False   False   False   False   False   False

我希望得到以下坐标: (2:3),(2:4),(2:5),(2:6),(2:7),(2:8),(3:5),(3:6),(4 :5),(4:6),(5:5),(6:6),(6:5),(6:6)

我还没有找到可以从数据帧获取任何坐标的工作代码。 我尝试过的事情:

result = im2arr.where('True')

df.sort_index() 

res = [i for i, val in enumerate(df) if val]

感谢您的任何提示。

最佳答案

使用np.where :

coord = np.where(df)

coordinates = [(x,y) for x, y in zip(coord[0], coord[1])]

输出

[(2, 2),
 (2, 3),
 (2, 4),
 (2, 5),
 (2, 6),
 (2, 7),
 (3, 4),
 (3, 5),
 (4, 4),
 (4, 5),
 (5, 4),
 (5, 5),
 (6, 4),
 (6, 5)]

关于python - 如何从 pd.dataframe 获取 bool 值 'True' 的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58474244/

相关文章:

python - 类型错误 : 'list' object is not callable: why?

Python TimedRotatingFileHandler 记录到文件和 stderr

python - 最大公约数的语法 - Python

python - Python 3中AES加密解密中的字节转字符串

Python doctests 和 unicode

python - 更改数据框索引值,同时保持其他列数据相同

python - 每次在 Python 中运行代码时,如何以相同的顺序随机化 pandas 列?

python - VPython 在 Jupyter 中明显变慢

Python MemoryError 何时不是真的内存不足?

python - Pandas ,在日期之间填充前几行之间的平均变化