我是个新手
numpy.
我想对1、2或更多行(或列)应用自定义函数。我该怎么做?在将其标记为复制之前,我想指出,我发现的唯一执行此操作的线程是
how to apply a generic function over numpy rows?
和
. 这篇文章有两个问题:
a) 作为一个初学者,我不太清楚操作是什么样的
A[:,None,:]
做
b) 那手术对我来说不起作用。请看下面。
import numpy as np
M = np.array([[8, 3, 2],
[6, 1, 2],
[1, 2, 4]])
现在,我想计算所有三行组合的乘积。为此,我创建了一个
习俗
只是一个例子。
def myf(a,b): return(a*b)
我吃了
numpy
以阵列产品为例。实际的自定义函数可能不同,但无论是什么操作,该函数都将始终返回
努比
数组。i、 这将需要两个同样大小的
myf
a
和
b
都是
np.array
.
两行递归相乘后的预期输出:
如果我应用成对行操作:
[[48,3,4],
[6,2,8],
[8,6,8]]
或者(自定义函数的应用顺序无关紧要。因此,行在输出矩阵中的实际位置无关紧要。下面的矩阵也可以。)
[[6,2,8],
[48,3,4], #row1 and 2 are swapped
[8,6,8]]
[[24, 6, 16]
[6, 2, 12]
[2, 8, 4]]
类似地,如果我将自定义函数应用于所有三行,我将得到:
[48,6,16] #row-wise
或
[48,12,8] #column-wise
我在阅读后尝试了几种方法,因此:
1:
vf=np.vectorize(myf)
vf(M,M)
但是,上述函数按元素而不是按行或列应用自定义函数。
2:
我还尝试:
M[:,None,:].dot(M) #dot mimics multiplication. Python wouldn't accept `*`
a) 我不知道输出是什么。
有人能帮我吗?我非常感谢你的帮助。
我对你敞开心扉
努比
和
scipy
.
一些专家要求提供所需的产出。让我们假设期望的输出是
[[48,3,4],
[6,2,8],
[8,6,8]]
.
不过,我希望您能提供一些指导,帮助我为2列或更多列和2行或更多行定制解决方案。