小编cf2*_*cf2的帖子

确定numpy数组中的相邻区域

我正在寻找以下内容.我有一个numpy数组,标记为区域.numpy数组表示分段图像.区域是具有相同值的多个相邻单元.每个地区都有自己独特的价值.具有3个区域的简化版本如下所示:

x = np.array([[1, 1, 1], [1, 1, 2], [2, 2, 2], [3, 3, 3]], np.int32)
Run Code Online (Sandbox Code Playgroud)

输出:

array([[1, 1, 1],
       [1, 1, 2],
       [2, 2, 2],
       [3, 3, 3]])
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我们有3个独立的区域,每个区域都标有唯一值(在这种情况下为1,2,3).

我想要的是每个区域的相邻(邻居)区域的价值.所以在这种情况下:

  • 区域1与区域2相邻
  • 区域2与区域1和3相邻
  • 区域3与区域2相邻

实现这一目标最优雅,最快捷的方法是什么?

非常感谢!

python arrays numpy neighbours region

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

计算数组列表的计数百分比

简单的问题,但我似乎无法让它发挥作用。我想计算一个数字在数组列表中出现的百分比并相应地输出该百分比。我有一个数组列表,如下所示:

import numpy as np

# Create some data   
listvalues = []

arr1 = np.array([0, 0, 2])
arr2 = np.array([1, 1, 2, 2])
arr3 = np.array([0, 2, 2])

listvalues.append(arr1)
listvalues.append(arr2)
listvalues.append(arr3)

listvalues
>[array([0, 0, 2]), array([1, 1, 2, 2]), array([0, 2, 2])]
Run Code Online (Sandbox Code Playgroud)

现在我使用集合来计算出现次数,它返回集合的列表。计数器:

import collections 

counter = []
for i in xrange(len(listvalues)):
    counter.append(collections.Counter(listvalues[i]))

counter
>[Counter({0: 2, 2: 1}), Counter({1: 2, 2: 2}), Counter({0: 1, 2: 2})]
Run Code Online (Sandbox Code Playgroud)

我正在寻找的结果是一个包含 3 列的数组,表示值 0 到 2 和行的 len(listvalues)。每个单元格都应填充该值在数组中出现的百分比:

# Result
66.66    0      33.33
0 …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy list

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

在标记集群组中使用Leaflet实时层

我将Leafletrealtimemarkercluster插件结合使用,以便显示在地图上实时更新的标记。这些插件相互独立运行非常好,但是当我想使用markercluster功能对实时层进行集群时,就会出现问题。

我在其中将json转换为标记,分配自定义图标并应用一些onEachFeature函数的实时层的代码示例:

realtimeLayer = L.realtime({
    url: 'someURL',
    crossOrigin: true,
    type: 'json'
}, {
    interval: 3 * 1000,
    onEachFeature: onEachFeature,
    pointToLayer: function(feature, latlng) {
        return L.marker(latlng, {
            icon: customIcon
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

我能够对非实时标记层进行的操作是创建一个标记集群组并将其添加到该组中,这样标记就可以像这样集群:

var clusterGroup = L.markerClusterGroup();
clusterGroup.addLayer(someLayer);
Run Code Online (Sandbox Code Playgroud)

但是,当我将realtimeLayer添加到集群组时,将不应用集群,或者将标记加载为net。我想念什么?谢谢!

javascript markerclusterer leaflet leaflet.markercluster

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

使用文件名 bash 的完整路径和通配符检查文件是否存在

我需要能够使用 bash 检查文件目录中是否存在具有特定字符串的文件名。在此示例中,我想检查是否存在文件20171101名中包含日期的文件:

[ -e "/path/to/data/dir/*20171101*" ] && echo true || echo false
Run Code Online (Sandbox Code Playgroud)

当我find *20171101*在目录中使用时,它会返回包含该日期的文件。但是,当我在完整路径上尝试相同的方法时,我收到错误binary operator expected。这适用于 -e 和 find。

我需要的是能够使用通配符完整路径搜索文件,并在满足条件时回显 true/false 。可以有多个文件,但当至少找到 1 个满足条件的文件时,应返回 true。此外,我需要在 1 行中执行它。谢谢!

bash

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