【问题标题】:Entering values at specific locations in an array in Python在 Python 数组的特定位置输入值
【发布时间】:2023-01-15 22:57:41
【问题描述】:

我有一个列表 T2 和一个数组 X 包含不同形状的 numpy 数组。我想根据T2 重新排列这些数组中的值。例如,对于X[0],元素应根据T2[0]占据位置,0.应放置在未提及的位置。同样,对于X[1],元素应根据T2[1]占据位置。我提出了预期的输出。

import numpy as np

T2 = [[0, 3, 4, 5], [1, 2, 3, 4]]

X=np.array([np.array([4.23056174e+02, 3.39165087e+02, 3.98049092e+02, 3.68757486e+02]),
       np.array([4.23056174e+02, 3.48895801e+02, 3.48895801e+02, 3.92892424e+02])])

预期的输出是

X=array([array([4.23056174e+02, 0, 0, 3.39165087e+02, 3.98049092e+02, 3.68757486e+02]),
      array([0, 4.23056174e+02, 3.48895801e+02, 3.48895801e+02, 3.92892424e+02])])

【问题讨论】:

  • 你需要一个锯齿状的数组作为输出吗?
  • 是的,我希望输出为锯齿状数组。
  • 然后我建议循环遍历 zip(T2, X) 并分别进行每个重建索引
  • 我已经尝试了一段时间但没有成功:(

标签: python list numpy


【解决方案1】:
import numpy as np

T2 = ...
X = ...

out = []

for t, x in zip(T2, X):
    temp = np.zeros(max(t) + 1)
    temp[t] = x
    out.append(temp)

out = np.array(out, dtype=object)

出去:

array([array([423.056174,   0.      ,   0.      , 339.165087, 398.049092,
              368.757486])                                               ,
       array([  0.      , 423.056174, 348.895801, 348.895801, 392.892424])],
      dtype=object)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    相关资源
    最近更新 更多