我有一组9个不同的数组,大小都是nbyn。为了得到一个特定的数组,我需要按元素组合它们。你知道吗
例如:给定一组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阵列,如大小为nbyn的阵列。我试过修补np.连接、拉链和np.einsum公司一点运气都没有。你知道吗
编辑:通用到不同的数组大小和数组数:
您可以通过重塑和调换:
至于时间速度(在10000次迭代中使用
timeit.repeat
来获得它),从最佳到最差:np.stack
+a.reshape(3, 3, 3, 3).transpose(2, 0, 3, 1).reshape(9, 9)
:9.9e-2秒vstack
+hstack
+reshape
:1.6e-1秒试试这个:
相关问题 更多 >
编程相关推荐