问题标签 [numpy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1631 浏览

python - Numpy 重新数组的元组列表

给定一个元组列表,其中每个元组代表表中的一行,例如

有没有一种简单的方法可以将其转换为记录数组?我试过

这似乎不起作用。

0 投票
3 回答
796 浏览

python - 奇怪的 numpy.float96 行为

我错过了什么:

编辑。在 cygwin 上,上面的代码可以正常工作:

为了完整起见,我用普通的python(不是Ipython)检查了这段代码:

编辑

我在 Numpy 的 trac 站点( 976902884 )上看到了三个错误报告,但这个似乎与字符串表示无关。因此,我打开了一个新错误(1263)。将在这里更新进度

0 投票
1 回答
1458 浏览

python - numpy.extract 和 numpy.any 函数,是否可以使其更简单?

如果有任何可能使此代码更简单,我将不胜感激!我试图摆脱零的行。第一列是日期。如果所有其他列都为零,则必须删除它们。列数不同。

numpy.extract文档

0 投票
5 回答
6043 浏览

python - numpy object_数组中最长的字符串

我正在使用一个 numpy object_ 数组来存储可变长度的字符串,例如

有没有一种简单的方法可以在不遍历所有元素的情况下找到数组中最长字符串的长度?

0 投票
9 回答
3649 浏览

python - Python/numpy 棘手的切片问题

我对一些 numpy 的东西有疑问。我需要一个 numpy 数组以不寻常的方式运行,方法是返回一个切片作为我切片的数据的视图,而不是副本。所以这是我想做的一个例子:

假设我们有一个像这样的简单数组:

我想使用数组中的前一个条目更新数组中的连续条目(从左到右移动),使用如下语法:

这将得到以下结果:

或者是这样的:

为了进一步说明,我想要以下行为:

除了我想要 numpy 的速度。

numpy 的默认行为是获取切片的副本,所以我实际得到的是:

我已经将此数组作为 ndarray 的子类,因此如果需要,我可以对其进行进一步更改,我只需要在更新左侧的切片时不断更新右侧的切片。

我是在做梦还是这种魔法可能?

更新:这都是因为我或多或少地尝试使用 Gauss-Seidel 迭代来解决线性代数问题。这是一个涉及谐波函数的特殊情况,我试图避免进入这个,因为它真的没有必要并且可能会进一步混淆事情,但是这里有。

算法是这样的:

正确的?但是您可以通过两种方式做到这一点,Jacobi 涉及使用其邻居更新每个元素,而不考虑您在 while 循环循环之前已经进行的更新,要在循环中执行此操作,您将复制数组,然后从复制的数组中更新一个数组。然而,Gauss-Seidel 使用您已经为每个 i-1 和 j-1 条目更新的信息,因此不需要副本,循环本质上应该“知道”,因为在每个单个元素更新后重新评估了数组. 也就是说,每次我们调用像 u[i-1,j] 或 u[i,j-1] 这样的条目时,前面循环计算的信息都会在那里。

我想用 numpy 切片的一行漂亮干净的代码替换这种缓慢而丑陋的嵌套循环情况:

但是结果是 Jacobi 迭代,因为当您获取切片时: u[:,-2,1:-1] 您复制了数据,因此切片不知道所做的任何更新。现在 numpy 仍然循环对吗?它不是并行的,它只是一种更快的循环方式,看起来像 python 中的并行操作。我想通过破解 numpy 来利用这种行为,以便在我获取切片时返回指针而不是副本。正确的?然后每次 numpy 循环时,该切片都会“更新”或实际上只是复制更新中发生的任何事情。为此,我需要将数组两侧的切片作为指针。

无论如何,如果那里有一些非常聪明的人那么棒,但我几乎已经让自己相信唯一的答案是在 C 中循环。

0 投票
3 回答
1299 浏览

python - 有没有可能将 recarray 转换为 ndarray 并更改 ndim?

我从 matplotlib.mlab.csv2rec 函数中得到了 recarray。我的期望是它会有像'x'这样的2维,但它有像'y'这样的1维。有什么方法可以从 y 中得到 x 吗?

0 投票
6 回答
64991 浏览

python - 遍历 numpy.array 的任意维度

是否有函数可以在 numpy 数组的任意维度上获取迭代器?

迭代第一个维度很容易......

但迭代其他维度更难。例如,最后一个维度:

我正在制作一个生成器来自己执行此操作,但我很惊讶没有一个名为 numpy.ndarray.iterdim(axis=0) 的函数可以自动执行此操作。

0 投票
1 回答
4385 浏览

python - 将行添加到 numpy recarray

有没有一种简单的方法可以在不创建新的记录数组的情况下将记录/行添加到 numpy 记录数组?假设我有一个需要 1Gb 内存的recarray,我希望能够在不让 python 暂时占用 2Gb 内存的情况下向它添加一行。

0 投票
4 回答
23549 浏览

python - python中有没有简单的方法可以将数据点推断到未来?

我有一个简单的 numpy 数组,每个日期都有一个数据点。像这样的东西:

有没有简单的方法可以将数据点推断到未来:date(2008,5,1), date(2008, 5, 20) 等?我知道它可以用数学算法来完成。但在这里,我正在寻找一些低悬的果实。实际上我喜欢 numpy.linalg.solve 所做的,但它看起来不适用于外推。也许我完全错了。

实际上,更具体地说,我正在构建一个燃尽图(xp 术语):'x=date 和 y=要完成的工作量',所以我已经完成了 sprint,我想可视化未来的 sprint如果目前的情况持续下去,就会去。最后我想预测发布日期。所以“要完成的工作量”的本质是它总是在燃尽图上下降。我还想获得推断的发布日期:音量变为零的日期。

这一切都是为了向开发团队展示事情的进展。在这里,精确性并不是那么重要:) 开发团队的动力是主要因素。这意味着我对非常近似的外推技术非常满意。

0 投票
3 回答
2667 浏览

python - 二进制二维矩阵的python轮廓

我想计算二进制 NxM 矩阵中形状周围的凸包。凸包算法需要一个坐标列表,所以我使用 numpy.argwhere(im) 来获得所有形状点坐标。然而,这些点中的大多数对凸包没有贡献(它们位于形状的内部)。因为凸包计算时间至少与它作为输入的点数成正比,所以我设计了一个想法来预先过滤过多的无用点,只通过那些跨越轮廓的点。这个想法很简单,对于二进制 NxM 矩阵中的每一行,我只取最小和最大索引。例如:

然后大纲应该读取(在元组中或作为 5x2 numpy 数组,我不介意):

围绕这个形状(im)的任何凸包都必须是这些点的子集(轮廓)。换句话说,如果“somefunc()”在过滤内部点方面是有效的,那么它可以节省凸包计算的时间。

我有执行上述技巧的代码,但我希望有人有更聪明(阅读速度更快)的方法,因为我需要多次运行它。我的代码是:

我的另一个想法是使用 Python 的 reduce(),所以我只需要遍历坐标列表一次。但我很难找到一个好的归约函数。

任何帮助将不胜感激!

编辑

与此同时,我找到了一种更快的方法,可以im直接从outline. 至少对于大图像,这要快得多。在明显没有外部解决方案的情况下,我将其定位为该问题的解决方案。

不过,如果有人知道更快的方法,请说出来:)