gpt4 book ai didi

python - Numpy 索引数组插入

转载 作者:行者123 更新时间:2023-12-01 02:35:49 24 4
gpt4 key购买 nike

我有 2 个数组,最后一个轴的形状相同,即:

第一:

   [[6614, 3390, 6327, 7595, 2797],
[4604, 3392, 4128, 1835, 7397],
[2268, 367, 7595, 2268, 2546],
[5450, 5450, 2836, 5450, 4106],
[8846, 8846, 3666, 8846, 3098],
[ -1, -1, 5450, -1, 5450],
[ -1, -1, 8846, -1, 8846],
[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0]]

第二:

   [[4035, 4035, 4035, 1168, 3545],
[8846, 8846, 8846, 8846, 8846],
[ -1, -1, -1, 8846, -1]]

假设形状是 (10,5) 和 (3,5)。我想做的是将第二个数组沿第一个轴插入第一个数组,但要使第一个数组的每一行继续第二个数组,即:(我将 <<>> 表示为第二个数组)

   [[6614,      3390,     6327,      7595,         2797],
[4604, 3392, 4128, 1835, 7397],
[2268, 367, 7595, 2268, 2546],
[5450, 5450, 2836, 5450, 4106],
[8846, 8846, 3666, 8846, 3098],
[<<4035>>, <<4035>>, 5450, <<1168>>, 5450],
[<<8846>>, <<8846>>, 8846, <<8846>>, 8846],
[<<-1>>, <<-1>>, <<4035>>, <<8846>>, <<3545>>],
[ 0, 0, <<8846>>, 0, <<8846>>],
[ 0, 0, <<-1>>, 0, <<-1>>]]

考虑到第一个数组中总是有足够的空间,此外我还有一个用于插入第二个数组的索引列表:

[5, 5, 7, 5, 7]

np.insert 似乎不接受特定索引处的设置序列,因此我需要一些接受设置范围的东西。显然,这可以通过 for 循环来解决,但我认为有一个更简单的解决方案。

最佳答案

如果您不介意转换为 pandas DataFrame,这里有一个简单的解决方案:

# Convert arrays to DataFrames
df1 = pd.DataFrame(first)
df2 = pd.DataFrame(second)

# Concatenate the first and second DataFrames
df = pd.concat([df1.replace([-1, 0], np.nan), df2])

df = df.apply(lambda x: pd.Series(x.dropna().values)).fillna(0).astype('int')

# Convert back to numpy array
df = df.as_matrix()

print(df)

[[6614 3390 6327 7595 2797]
[4604 3392 4128 1835 7397]
[2268 367 7595 2268 2546]
[5450 5450 2836 5450 4106]
[8846 8846 3666 8846 3098]
[4035 4035 5450 1168 5450]
[8846 8846 8846 8846 8846]
[ -1 -1 4035 8846 3545]
[ 0 0 8846 0 8846]
[ 0 0 -1 0 -1]]

关于python - Numpy 索引数组插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46253361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com