繁体   English   中英

如何通过numpy读取矩阵的每个元素,然后添加到单独的矩阵中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM