小编mir*_*ari的帖子

如何将numpy数组提升为幂?(对应于重复的矩阵乘法,而不是元素)

我想提出一个二维的numpy array,让我们称它为A一些数字的力量n,但我迄今为止未能找到函数或运算符来做到这一点.

我知道我可以将它转换为matrix类型并使用当时的事实(类似于Matlab中的行为),A**n正是我想要的,(对于array相同的表达式意味着元素取幂).matrix然而,向后和向后投射似乎是一个相当丑陋的工作方式.

当然,必须有一个很好的方法来执行该计算,同时保持格式array

python numpy scipy

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

Numpy:将一组函数应用于相同长度的2d数组值,就像在元素中相乘一样?(使用python函数作为运算符?)

numpy.array的列包含不同的数据类型,列也应该有不同的函数应用于它们.我也有一个数组中的函数.

让我们说:

a = array([[ 1, 2.0, "three"],
           [ 4, 5.0, "six"  ]], dtype=object)

functions_arr = array([act_on_int, act_on_float, act_on_str])
Run Code Online (Sandbox Code Playgroud)

我当然可以想办法通过划分事物来做到这一点,但对我来说最自然的一件事就是将其视为与广播的元素乘法,以及作为运算符的函数.所以我想做点什么

functions_arr*a
Run Code Online (Sandbox Code Playgroud)

并获得的效果

array([[act_on_int(1), act_on_float(2.0), act_on_str("three")],
       [act_on_int(4), act_on_float(5.0), act_on_str("six")  ]])
Run Code Online (Sandbox Code Playgroud)

你知道如何通过这些方式实现某些目标吗?

编辑:我改变了问题中数组的定义,dtype=[object]因为人们指出这对于数组按照我的意图存储类型很重要.

感谢您的回答和评论!我已经接受了发送者的回答,觉得这与我的想法非常接近.

由于对于我如何将操作视为乘法似乎存在一些混淆,让我用另一个例子来澄清:

你很清楚,这样的操作如下:

v = array([1,2,3])
u = array([[5,7,11],
           [13,17,19]])
v*u
Run Code Online (Sandbox Code Playgroud)

将广播v的行u和收益率

array([[ 1*5, 2*7,  3*11],
       [1*13, 2*17, 3*19]])
Run Code Online (Sandbox Code Playgroud)

array([[ 5, 14, 33],
       [13, 34, 57]])
Run Code Online (Sandbox Code Playgroud)

如果我们现在v用例如我们将拥有的del运算符替换(以下实际上不是在运行python代码 :)

V = array([(d/dx),(d/dy),(d/dz)])
u …
Run Code Online (Sandbox Code Playgroud)

python numpy

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

标签 统计

numpy ×2

python ×2

scipy ×1