numpy 用Python编写有效的for循环

zpqajqem  于 2023-01-02  发布在  Python
关注(0)|答案(1)|浏览(116)

有没有办法编写一个for循环,以便下面的代码可以生成m=0,1的输出?现在,我手动使用m=0m=1。我给出了当前和预期的输出。

import numpy as np

T2=[[0, 3, 5, 8, 9, 10, 11],[0, 2, 3, 5, 6, 8, 9, 10, 11]]

X=np.array([np.array([4.17551036e+02, 3.53856161e+02, 2.82754301e+02, 1.34119055e+02,
              6.34573886e+01, 2.08344718e+02, 1.00000000e-24])               ,
       np.array([4.17551036e+02, 3.32821605e+02, 2.94983702e+02, 2.78809292e+02,
              1.26991664e+02, 1.36026510e+02, 8.31512525e+01, 2.07329562e+02,
              1.00000000e-24])                                               ],
      dtype=object)

C1=0.0

index=0

m=0/1

for j in range(T2[m][-1]):
    if(j!=T2[m][index]):
        X[m] = np.insert(X[m], j, C1, axis=None)  
    else:
        index+=1
print([X[m]])

当前输出为

m=0:

[array([4.17551036e+02, 0.00000000e+00, 0.00000000e+00, 3.53856161e+02,
       0.00000000e+00, 2.82754301e+02, 0.00000000e+00, 0.00000000e+00,
       1.34119055e+02, 6.34573886e+01, 2.08344718e+02, 1.00000000e-24])]

m=1:

[array([4.17551036e+02, 0.00000000e+00, 3.32821605e+02, 2.94983702e+02,
       0.00000000e+00, 2.78809292e+02, 1.26991664e+02, 0.00000000e+00,
       1.36026510e+02, 8.31512525e+01, 2.07329562e+02, 1.00000000e-24])]

预期的输出为

array([array([4.17551036e+02, 0.00000000e+00, 0.00000000e+00, 3.53856161e+02,
              0.00000000e+00, 2.82754301e+02, 0.00000000e+00, 0.00000000e+00,
              1.34119055e+02, 6.34573886e+01, 2.08344718e+02, 1.00000000e-24]),
       array([4.17551036e+02, 0.00000000e+00, 3.32821605e+02, 2.94983702e+02,
              0.00000000e+00, 2.78809292e+02, 1.26991664e+02, 0.00000000e+00,
              1.36026510e+02, 8.31512525e+01, 2.07329562e+02, 1.00000000e-24])                         ],dtype=object)
8yparm6h

8yparm6h1#

添加外部for循环:

for m in [0,1]:
    for j in range(T2[m][-1]):
        if(j!=T2[m][index]):
            X[m] = np.insert(X[m], j, C1, axis=None)  
        else:
            index+=1

相关问题