小编yod*_*ish的帖子

在 Python 字典中查找最接近的值并返回其键

我有一个价值

value = 0.04532
Run Code Online (Sandbox Code Playgroud)

另外,还有一本类似的字典

{'1': 0.02827, '2': 0.0, '3': 0.09827, '4': 0.04533}
Run Code Online (Sandbox Code Playgroud)

4在本例中,我只想返回字典中最接近原始值的值的键

我发现一个较旧的帖子做了类似的事情

newValue = value
answer = min(dict.items(), key=lambda (_, value): abs(value - newValue))
Run Code Online (Sandbox Code Playgroud)

这返回元组('4', 0.04533),我只想要键(作为 int)。此外,我无法理解该代码到底在做什么。

有没有更干净的方法来完成这项工作?

python dictionary

11
推荐指数
1
解决办法
9061
查看次数

使用Python和Numpy将2个图像混合为1

我需要将2个numpy.ndarrays作为参数并逐个像素地迭代它们,添加2个值并除以2.

基本上创建两者的混合图像并将其作为numpy.ndarray返回

这是我想出来的,但可以真正使用一些建议.

    def blendImages(image1, image2):            
        it1 = np.nditer(image1)
        it2 = np.nditer(image2)            
        for (x) in it1:
            for (y) in it2:
                newImage = (x + y) / 2
        return newImage
Run Code Online (Sandbox Code Playgroud)

python opencv numpy

4
推荐指数
2
解决办法
9460
查看次数

将 2 个图像转换为 numpy 数组并逐像素比较

我正在使用 Pillow 加载 2 张图像(显然是黑白,但采用 RGB 格式)并转换为灰度。我不能使用opencv。

aImage = Image.open(imageA.visualFilename).convert("L")
bImage = Image.open(imageB.visualFilename).convert("L")
Run Code Online (Sandbox Code Playgroud)

我将它们转换为 numpy 数组。

aArray = np.array(aImage)
bArray = np.array(bImage)
Run Code Online (Sandbox Code Playgroud)

我最终想要做的是 (1) 计算每个数组中的所有黑色像素和 (2) 逐像素比较 aArray 与 bArray 并计算匹配黑色像素的数量。

目前让我感到困惑的是,当我打印其中一个数组时print aArray.shape,我不明白我在看什么。我正在使用np.set_printoptions(threshold='nan')打印完整数组,但它似乎是一系列元素,其值比我预期的要多。我认为每个元素将包含一个 255 或 0?

我这样做是为了使用黑白像素的正确方法吗?当我尝试转换为二进制“1”时,我得到了“真”/“假”结果,这让我更加困惑。

另外,假设 aArray 和 bArray 看起来相同,但实际上相差几个像素,那么将“模糊逻辑”合并到两个像素的像素比较中的最佳方法是什么?

仅用于补充信息,aImage.size然后aImage.mode返回

(184, 184)
L
Run Code Online (Sandbox Code Playgroud)

python arrays numpy python-imaging-library

3
推荐指数
1
解决办法
5784
查看次数

逐行解析列表,在Powershell中创建一个新列表

我需要读取包含源/目标IP和端口以及标记的文件.我正在使用Get-Content:

Get-Content $logFile -ReadCount 1 | % {

} | sort | get-unique | Out-File "C:\Log\logout.txt"
Run Code Online (Sandbox Code Playgroud)

这是输入文件的示例:

|10.0.0.99|345|195.168.4.82|58164|spam|
|10.0.0.99|345|195.168.4.82|58164|robot|
|10.0.0.99|231|195.168.4.82|58162|spam|
|195.168.4.82|58162|10.0.0.99|231|robot|
|10.0.0.99|345|195.168.4.82|58168|spam|
|10.0.0.99|345|195.168.4.82|58169|spam|
Run Code Online (Sandbox Code Playgroud)

我需要做的是输出一个新的列表,但如果相同的源/目标IP /端口都是'垃圾邮件'和'机器人',我只需要将该行输出为'机器人'(上面第1行和第2行).如果现有连接的反方向是"垃圾邮件"或"机器人",我需要做同样的事情,我只需要一个或另一个,它就是'机器人'(上面的第3和第4行).将有大量"垃圾邮件"行没有重复或反向连接(上面的最后几行),他们需要保持不变.

这是我一直用来创建连接的反向方向,但我还没弄清楚如何正确创建新列表:

$reverse = '|' + ($_.Split("|")[3,4,1,2,5] -join '|') + '|'
Run Code Online (Sandbox Code Playgroud)

上述产出将是:

|10.0.0.99|345|195.168.4.82|58164|robot|
|195.168.4.82|58162|10.0.0.99|231|robot|
|10.0.0.99|345|195.168.4.82|58168|spam|
|10.0.0.99|345|195.168.4.82|58169|spam|
Run Code Online (Sandbox Code Playgroud)

(除了第二行不必是相反的方向)

谢谢你的帮助!

powershell

1
推荐指数
1
解决办法
310
查看次数

在列表中找到一个字符串并替换

我遇到的帖子演示了如何在列表中找到一个字符串并替换,但我很难将搜索概括为一个字符串.

例如

listX = ['color green', 'shape circle', 'above t']
Run Code Online (Sandbox Code Playgroud)

我想找到所有以'above'开头的字符串,我已经能够使用any并留下以下空间对列表进行一些最小的搜索,'above '但我无法弄清楚如何替换我找到的内容.

我正在尝试创建的输出将是:

['color green', 'shape circle', 'above']
Run Code Online (Sandbox Code Playgroud)

我还想弄清楚如何从列表中一起删除以'above'开头的字符串.

python list

1
推荐指数
1
解决办法
84
查看次数