小编Sha*_*ear的帖子

基于条件的Numpy split数组没有for循环

所以假设我有一个numpy数组,它在2d空间中保存点,如下所示

np.array([[3, 2], [4, 4], [5, 4], [4, 2], [4, 6], [9, 5]]) 
Run Code Online (Sandbox Code Playgroud)

我还有一个numpy数组,它将每个点标记为一个数字,这个数组是一个1d数组,其长度为点数组中的点数.

np.array([0, 1, 1, 0, 2, 1])
Run Code Online (Sandbox Code Playgroud)

现在我想取每个具有来自labels数组的索引的点的平均值.因此,对于标记为0的所有点,取这些点的平均值.我目前解决这个问题的方法是以下方式

return np.array([points[labels==k].mean(axis=0) for k in range(k)])
Run Code Online (Sandbox Code Playgroud)

其中k是标签数组中的最大数字,或者称为标记点的方式的数量.

我想要一种方法来做到这一点,而不使用for循环,也许一些我尚未发现的numpy功能?

python arrays performance numpy vectorization

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

opencl中速度慢的问题

我第一次尝试使用opencl,目标是计算数组中每一行的argmin。由于每一行的操作都独立于其他行,因此我认为将其轻松放在图形卡上是很容易的。

与使用外部forloop在cpu上运行代码时相比,使用此代码获得的性能似乎更差,我们将不胜感激。

这是代码:

#pragma OPENCL EXTENSION cl_khr_fp64 : enable

int argmin(global double *array, int end)
{
  double minimum = array[0];
  int index;
  for (int j = 0; j < end; j++)
  {
    if (array[j] < minimum)
    {
      minimum = array[j];
      index = j;
    }
  }
  return index;
}

kernel void execute(global double *dist, global long *res, global double *min_dist)
{
  int row_size = 0;
  int i = get_global_id(0);

  int row_index = i * row_size;
  res[i] = argmin(&dist[row_index], row_size);
  min_dist[i] = …
Run Code Online (Sandbox Code Playgroud)

c gpu opencl

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

Azure Devops 从 PR 触发器构建管道获取源分支

因此,我一直在构建一个构建管道,每当向 master 发出拉取请求时就会触发该管道,因此我们有一个分支策略,使得对 master 分支的唯一更改是通过拉取请求。

我希望构建管道检查 PR 的源分支,并作为构建管道的一部分对源分支进行一些提交。我以为我可以只使用该Build.SourceBranchName变量,但是当触发管道时,SourceBranchName 是 master。所以我无法使用它。

有什么简单的方法可以做到这一点吗?

build-pipeline azure-devops

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

在azure函数中从iothub获取deviceId

我正在进行一个项目,必须使用 IoTHub 将一些 IoT 设备连接到 azure。我一直在遵循本指南:https://learn.microsoft.com/en-us/samples/azure-samples/functions-js-iot-hub-processing/processing-data-from-iot-hub-with-azure -功能/

一切工作正常,我有一个连接到 IoTHub 的名为 MyPythonDevice 的设备,所以现在在我的代码中我希望看到这个 deviceId。在上面文章给出的示例中,我们看到了一个 deviceId,但对我来说,这就是undefined我记录它的情况。

于是我就搜索了一下,发现了下面的代码片段:

context.log(context.bindingData.systemProperties["iothub-connection-device-id"])
Run Code Online (Sandbox Code Playgroud)

但这会返回以下内容

Exception: TypeError: Cannot read property 'iothub-connection-device-id' of undefined
Run Code Online (Sandbox Code Playgroud)

这意味着systemProperties未定义..

关于如何获取 deviceId 有任何帮助吗?

azure azure-iot-hub

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

使用Haskell缓慢解决Euler 25项目的问题

我是Haskell语言的新手,要学习,我想我会参加一些Euler项目。在Euler 25项目中,我们的任务是执行以下操作:

第12个术语F12是包含三个数字的第一个术语。斐波纳契数列中包含1000个数字的第一项的索引是什么?

这是我对问题的解决方案:

fibGen :: Int -> Int
fibGen 0 = 0
fibGen 1 = 1
fibGen n = fibGen (n-1) + fibGen (n-2)

stepper n
  | length (show ( fibGen n )) >= 1000 = n
  | otherwise = stepper n + 1
Run Code Online (Sandbox Code Playgroud)

这里n只是序列的起点。但是这种方法非常慢,在我决定尝试另一种方法之前已经运行了一个多小时。然后我找到了另一个解决方案,如下所示:

fibs = 0:1:(zipWith (+) fibs (tail fibs))
t = 10^999

problem_25 = length w
    where
      w = takeWhile (< t) fibs
Run Code Online (Sandbox Code Playgroud)

这非常快。

所以我的问题是,使它变得如此缓慢的第一种方法有什么问题。

haskell

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

从python中的字符串列表中提取最大数字

所以我试图从python中的字符串列表中提取最大的数字。我尝试使用的字符串如下所示

a = ['a', '3', '5', 'c10', 'foo', 'bar', '999']
Run Code Online (Sandbox Code Playgroud)

我正试图找回最大的数字。因此,在这种情况下,它将是999,而我不想将它作为int返回。

我似乎找不到解决此问题的漂亮方法,希望你们能提供帮助。

python python-3.x

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