[英]How to read every element of matrix by numpy then add to the separate matrix?
我在python3中使用numpy,我有512X512矩阵,我需要读取每个值并将其发送给函数-函数将进行一些计算并将返回3个值-现在我需要在单独的矩阵中添加这3个值-顺便说一下,我的矩阵将是512X512X512。
例如:主矩阵
a=[1,2,3,4,5…23] [23,24,33,….23]…(512)….[11,22,33,44,55,…66]
我想提取每个元素(例如:1),然后在函数中计算并返回3个值-我们将返回的值称为:a1,a2,a3,然后在这里添加单独的矩阵,如下所示:
tempA=[a1,…]
tempB=[a2,…]
tempC=[a3,…]
如何在python中使用numpy做到这一点?
因为我只是在玩np.vectorize
, 所以我如何以优雅和有效的方式在numpy数组上映射python可调用? ,我可以将其应用于您的情况:
In [462]: def foo(val):
...: return val, val*2, val*3
...:
In [463]: fv = np.vectorize(foo, otypes=[int,int,int])
从foo
返回的otypes
值中的每个返回一个otypes
值。
In [464]: X = np.arange(12).reshape(3,4)
In [465]: X
Out[465]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
向量化函数返回一个数组元组,我们可以在3d数组中解包和/或重新分组:
In [466]: tmp1, tmp2, tmp3 = fv(X)
In [467]: tmp1
Out[467]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [468]: tmp2
Out[468]:
array([[ 0, 2, 4, 6],
[ 8, 10, 12, 14],
[16, 18, 20, 22]])
In [469]: tmp3
Out[469]:
array([[ 0, 3, 6, 9],
[12, 15, 18, 21],
[24, 27, 30, 33]])
In [470]: np.array((tmp1,tmp2,tmp3))
Out[470]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[ 0, 2, 4, 6],
[ 8, 10, 12, 14],
[16, 18, 20, 22]],
[[ 0, 3, 6, 9],
[12, 15, 18, 21],
[24, 27, 30, 33]]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.