【发布时间】:2018-02-25 11:02:29
【问题描述】:
我有 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 循环解决,但我认为有一个更简单的解决方案。
【问题讨论】:
-
那么,您没有使用来自
[5, 5, 7, 5, 7]的所有索引,因为第二个数组只有三行? -
我正在使用所有索引,请注意有 5 列和 5 个索引。
-
我不明白你的例子。
[ 0, 0, -1, 0, -1]来自哪里? -
请查看我的更正结果(只有 -1 关闭)。以下是结果的构建方式,逐列获取第二个数组并将其滑入第一个数组,将其定位在索引列表中指定的索引处 ([5, 5, 7, 5, 7])。所以第二个数组的第一列将被插入到第 5 个索引处的第一列。
-
我已经突出显示了第二个数组在第一个数组中的位置。
标签: python arrays numpy insert concatenation