numpy能像matlab那样解释索引列吗

2024-05-20 09:38:54 发布

您现在位置:Python中文网/ 问答频道 /正文

 mat = nan (5,4)

mat =

   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN

fact = rand(5,4)

fact =

    0.3507    0.5870    0.8443    0.4357
    0.9390    0.2077    0.1948    0.3111
    0.8759    0.3012    0.2259    0.9234
    0.5502    0.4709    0.1707    0.4302
    0.6225    0.2305    0.2277    0.1848

cd =

     1
     5
     2
     3
     4

>> mat(cd, : ) = fact

mat =

    0.3507    0.5870    0.8443    0.4357
    0.8759    0.3012    0.2259    0.9234
    0.5502    0.4709    0.1707    0.4302
    0.6225    0.2305    0.2277    0.1848
    0.9390    0.2077    0.1948    0.3111

python或numpy中是否有类似于最后一行所做的事情,也就是说,你可以在一列索引中输入,它会用相应的行自动填充nan矩阵,而不是手动地遍历它并逐行执行。在

另外还注意到cd可以有比mat更多的行,mat本身也可以相应地扩展,至少matlab是这样。在


Tags: numpycd矩阵手动nan事情factmatlab
2条回答

我觉得也差不多:

>>> arr = np.empty((5,4))
>>> arr.fill(np.nan)
>>> arr
array([[ nan,  nan,  nan,  nan],
       [ nan,  nan,  nan,  nan],
       [ nan,  nan,  nan,  nan],
       [ nan,  nan,  nan,  nan],
       [ nan,  nan,  nan,  nan]])
>>> rand = np.random.random((5,4))
>>> rand
array([[ 0.10378825,  0.36936186,  0.65145694,  0.79532325],
       [ 0.69595542,  0.78740795,  0.31969862,  0.81173803],
       [ 0.06674611,  0.99920068,  0.78696773,  0.01768565],
       [ 0.9948402 ,  0.34200073,  0.60993921,  0.13801365],
       [ 0.18503791,  0.39392016,  0.64800295,  0.98816382]])
>>> cd = [0, 4, 1, 2, 3]   # Numpy arrays are 0-indexed.
>>> arr[cd, :] = rand
>>> arr
array([[ 0.10378825,  0.36936186,  0.65145694,  0.79532325],
       [ 0.06674611,  0.99920068,  0.78696773,  0.01768565],
       [ 0.9948402 ,  0.34200073,  0.60993921,  0.13801365],
       [ 0.18503791,  0.39392016,  0.64800295,  0.98816382],
       [ 0.69595542,  0.78740795,  0.31969862,  0.81173803]])

您可以在python中完全这样做,只需使用基于0的索引,而不是基于1的索引:

>>> m[cd-1] = fact

>>> m 
array([[ 0.3507,  0.587 ,  0.8443,  0.4357],
       [ 0.8759,  0.3012,  0.2259,  0.9234],
       [ 0.5502,  0.4709,  0.1707,  0.4302],
       [ 0.6225,  0.2305,  0.2277,  0.1848],
       [ 0.939 ,  0.2077,  0.1948,  0.3111]])

相关问题 更多 >