小编Pau*_*ger的帖子

如何计算GPU上的成对距离矩阵

我的代码中的瓶颈是我计算成对距离矩阵的区域.由于这是迄今为止最慢的部分,我花了很多时间来加速我的代码.

我发现许多加速在线使用文章,但收益微乎其微.所以,我正在寻找一种方法来使用我的GPU创建距离矩阵,以进一步加快速度.但是,我对使用GPU进行计算知之甚少. 任何人都可以帮我这样做吗?

在我的研究中,我发现了以下内容,但没有一个使用GPU:

  1. 这篇文章很有用,但加速很少.
  2. 这篇文章提供了有关如何使用cython和numba的信息.

以下是如何计算成对距离矩阵的示例摘录:

import numpy as np
from scipy import spatial

rows = 1000
cols = 10
mat = np.random.randn(rows, cols)
d_mat = spatial.distance.cdist(mat, mat)
Run Code Online (Sandbox Code Playgroud)

我的显卡是Nvidia Quadro M2000M

python gpgpu distance-matrix

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

将numpy数组从VBA移动到Python并返回

我在Microsoft Access中有一个VBA脚本.VBA脚本是具有多个人的大型项目的一部分,因此无法离开VBA环境.

在我的脚本的一部分中,我需要快速地在桌面上进行复杂的线性代数.因此,我将编写为记录集的VBA表移动到Python中以执行线性代数,然后返回到VBA.python中的矩阵表示为numpy数组.

一些线性代数是专有的,因此我们使用pyinstaller编译专有脚本.

该过程的细节如下:

  1. VBA脚本创建表示表的csv文件input.csv.
  2. VBA脚本通过命令行运行python脚本
  3. python脚本将csv文件input.csv作为numpy矩阵加载,对其执行线性代数,并创建输出csv文件output.csv.
  4. VBA等待python完成,然后加载output.csv.
  5. VBA删除不再需要的input.csv文件和output.csv文件.

这个过程效率低下.

有没有办法在没有csv混乱的情况下将VBA矩阵加载到Python(和后面)?这些方法是否可以通过pyinstaller使用已编译的python代码?

我在stackoverflow上找到了以下相关的示例.但是,它们没有具体解决我的问题.

将结果从Python返回给Vba

如何将变量从Python传递给VBA Sub

python vba numpy

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

没有封装的快速矩阵求逆

假设我有一个方阵 M.假设我想反转矩阵M.

我试图使用gmpy2中的fractions mpq类作为我的矩阵的成员.如果您不熟悉这些分数,它们在功能上与python的内置包类似.唯一的问题是,除非我将它们从分数形式中取出,否则没有包会反转我的矩阵.我需要分数形式的数字和答案.所以我必须编写自己的函数来反转. MfractionsM

我可以编程已知的算法,例如高斯消除.但是,性能是一个问题,所以我的问题如下:

有没有计算速度快的算法可以用来计算矩阵的逆矩阵M

python matrix matrix-inverse

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

用于近似大对称矩阵的最高3个特征值和特征向量的快速方法

在我的例子中,我正在编写代码来计算非常大的矩阵的经典多维缩放(缩写为MDS). nnn = 500,000

在MDS一步,我需要计算创3个特征值及其对应的特征向量n通过n矩阵.该矩阵称为B矩阵.我只需要这三个特征向量和特征值.计算大矩阵的特征向量和特征值的常用方法需要很长时间,而且我不需要非常准确的答案,因此我正在寻找特征向量和特征值的估计.

一些参数:

  1. B矩阵是对称的,真实的,并且相当密集
  2. B理论上的特征值分解应该总是产生实数.
  3. 我不需要完全精确的估计,只需要快速估算.我需要它在几个小时内完成.
  4. 我用python和C++编写

我的问题:是否有快速估算这种大B矩阵的三个特征向量和特征值的方法?

我的进展:我找到了一种近似矩阵最高特征值的方法,但我不知道是否可以将其推广到最高的三个.我也发现这篇论文写于1996年,但它非常技术性,对我来说很难阅读.

c++ python algorithm matrix eigenvalue

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

如何将.png文件转换为二维矩阵?

我正在为生物医学成像课程设计一个项目(请注意:这是非编程课程,因此寻求编程帮助并不是作弊。寻求规划方面的概念帮助将是作弊。)使用不同的数学变换的图像。我正在用C编写程序,因此它可以尽可能快。我已经完成了数学转换的代码,但是我已经意识到我不知道如何将灰度.png文件转换为二维矩阵/数组以进行计算,而且我也不知道如何显示.png C档。有人可以帮我吗?

我正在尝试将“ image.png”图像转换为2d数组,其中数组中的每个条目的值都在0-255之间,并与“ image.png”中的每个像素相对应。我还想将一个二维数组(其中每个条目对应于图像中的一个像素,并将其值介于0-255之间)转换为新的“ image_two.png”文件。

我是一个有点新的程序员。我在python编程方面有扎实的基础,但是C对我来说是新的。我做了很多研究,发现很多人都在谈论使用“此库”“该库”,或“此库”,但是我如何在C中使用下载的库?作为python程序员,这对我来说是陌生的领域:(

我正在使用Ubuntu 12.04

重申:

  • 您如何在C中将灰度的.png图像读取为二维数组/矩阵?

  • 您如何在C中将二维数组/矩阵显示为灰度图像?

  • 您如何使用C代码下载下载的库(特别是针对上述两个问题)?我发现了如何使用这些库。

编辑:我仍然很难弄清楚如何从.png文件中创建一个灰度2d数组,以及如何从灰度2d矩阵中创建一个.png文件。有人可以帮忙吗?

c png

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

Octave 字体和大小更改的问题

我需要帮助解决我在 Ubuntu 13.04 上的 Octave 3.6.4 中遇到的问题。

我查找了多种方法来更改字体大小和/或图例、标题或绘图轴的字体;而且我发现我找到的代码不起作用。我尝试复制一些旨在更改文本或字体大小的代码片段,但无法更改它们。

Octave 输出图表时显示的字体是普通的定宽字体。

谁能帮我?我尝试过诸如...

xlabel('x-title', 'FontSize', 20)
Run Code Online (Sandbox Code Playgroud)

或者

xlabel('x-title', 'FontName', 'Vera')
Run Code Online (Sandbox Code Playgroud)

或者

foo = xlabel('x-title')
set(foo, 'FontSize', 20)
Run Code Online (Sandbox Code Playgroud)

或者

foo = xlabel('x-title)
set(foo, 'FontName', 'Vera')
Run Code Online (Sandbox Code Playgroud)

并且没有改变字体。

fonts octave

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

如何将一个同情方程组转化为矩阵形式

如何将一个sympy方程组转换为矩阵形式?

例如,如何转换这样的系统:

equation_one = 4*a*x + 3*b*y
equation_two = 2*b*x + 1*a*y
Run Code Online (Sandbox Code Playgroud)

进入这样的系统:

matrix_form = ([equation_one, equation_two], [x, y])
Run Code Online (Sandbox Code Playgroud)

这将返回:

[[4*a, 3*b], 
 [2*b, 1*a]]
Run Code Online (Sandbox Code Playgroud)

是否存在类似matrix_form()的函数?

python sympy

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

为具有指定列的每一行分配值到numpy数组

我有一个foo包含n行和m列的矩阵。例:

>>> import numpy as np
>>> foo = np.arange(6).reshape(3, 2) # n=3 and m=2 in our example
>>> print(foo)
array([[0, 1],
       [2, 3],
       [4, 5]])
Run Code Online (Sandbox Code Playgroud)

我有一个数组barn元素。例:

>>> bar = np.array([9, 8, 7])
Run Code Online (Sandbox Code Playgroud)

我有一个包含列索引ind的长度列表n。例:

>>> ind = np.array([0, 0, 1], dtype='i')
Run Code Online (Sandbox Code Playgroud)

我想使用列索引ind来将值赋给bar矩阵foo。我想每行执行一次。假设执行此操作的函数称为assign_function,我的输出将如下所示:

>>> assign_function(ind, bar, foo)
>>> print(foo)
array([[9, 1],
       [8, 3],
       [4, 7]])
Run Code Online (Sandbox Code Playgroud)

有pythonic的方法可以做到这一点吗?

python arrays numpy

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

如何将两个二进制数合并为三进制数

我有两个二进制整数,x0并且x1是8位(这样它们跨越从0到255).关于这些数字,这句话总是如此:x0 & x1 == 0.这是一个例子:

bx0 = 100 # represented as 01100100 in binary
bx1 = 129 # represented as 10000001 in binary
Run Code Online (Sandbox Code Playgroud)

所以我需要对这些数字进行以下操作.首先,将这些二进制表示解释为三元(基数为3)的数字,如下所示:

tx0 = ternary(bx0) # becomes  981 represented as 01100100 in ternary
tx1 = ternary(bx1) # becomes 2188 represented as 10000001 in ternary
Run Code Online (Sandbox Code Playgroud)

然后,1将三元表示中的所有内容交换tx12:

tx1_swap = swap(tx1) # becomes 4376, represented as 20000002 in ternary
Run Code Online (Sandbox Code Playgroud)

然后使用它们的三元版本OR来获得最终的组合数字:

result = ternary_or(tx0, tx1_swap) # …
Run Code Online (Sandbox Code Playgroud)

python ternary

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

将字符串计算为值

Python中是否可以计算字符串中的术语?例如:

string_a = "4 ** (3 - 2)"

unknown_function(string_a) = 4
Run Code Online (Sandbox Code Playgroud)

这可能吗?在我的例子中是否有模仿"unknown_function"的函数?

python string

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