我想提出一个二维的numpy array,让我们称它为A一些数字的力量n,但我迄今为止未能找到函数或运算符来做到这一点.
我知道我可以将它转换为matrix类型并使用当时的事实(类似于Matlab中的行为),A**n正是我想要的,(对于array相同的表达式意味着元素取幂).matrix然而,向后和向后投射似乎是一个相当丑陋的工作方式.
当然,必须有一个很好的方法来执行该计算,同时保持格式array?
我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)