【发布时间】:2020-01-13 13:57:29
【问题描述】:
我有一组 9 个不同的数组,大小均为 n 乘以 n。我需要以元素方式组合它们以产生特定的数组。
例如:给定一组 9 个大小相等的数组:
a1 = np.array([[11, 12, 13], [14, 15, 16], [17, 18, 19]])
a2 = np.array([[21, 22, 23], [24, 25, 26], [27, 28, 29]])
a3 = np.array([[31, 32, 33], [34, 35, 36], [37, 38, 39]])
a4 = np.array([[41, 42, 43], [44, 45, 46], [47, 48, 49]])
a5 = np.array([[51, 52, 53], [54, 55, 56], [57, 58, 59]])
a6 = np.array([[61, 62, 63], [64, 65, 66], [67, 68, 69]])
a7 = np.array([[71, 72, 73], [74, 75, 76], [77, 78, 79]])
a8 = np.array([[81, 82, 83], [84, 85, 86], [87, 88, 89]])
a9 = np.array([[91, 92, 93], [94, 95, 96], [97, 98, 99]])
想要的结果是
b = np.array([[11, 21, 31, 12, 22, 32, 13, 23, 33],
[41, 51, 61, 42, 52, 62, 43, 53, 63],
[71, 81, 91, 72, 82, 92, 73, 83, 94],
[14, 24, 34, 15, 25, 35, 16, 26, 36],
[44, 54, 64, 45, 55, 65, 46, 56, 66],
[74, 84, 94, 75, 85, 95, 76, 86, 96],
[17, 27, 37, 18, 28, 38, 19, 29, 39],
[47, 57, 67, 48, 58, 68, 49, 59, 69],
[77, 87, 97, 78, 88, 98, 79, 89, 99]])
所以数组 b 的第一行由 a1、a2 和 a3 的第一行组成,按元素组合。
数组 b 的第二行由 a4、a5 和 a6 的第一行组成,按元素组合。
第三行由 a7、a8 和 a9 的第一行组成,按元素组合。
然后在 a1-a9 中的其余行继续使用相同的模式。
这需要适用于任何大小的 a1-a9 数组,因为数组的大小为 n 乘以 n。我尝试过修改 np.concatenate、zip 和 np.einsum,但都没有成功。
【问题讨论】:
-
欢迎来到 SO。这不是讨论论坛或教程。请使用tour 并花时间阅读How to Ask 以及该页面上的其他链接。不鼓励询问代码的问题。