麻皮交织奇形怪状的阵列



好的,这里是给定的数据; 形状有三个 numpy 数组: (一, 4, 2(, (一, 4, 3(, (一, 4, 2( i 在它们之间共享,但可变。 dtype 是 float32 表示所有内容。 目标是按特定顺序交织它们。让我们看一下这些数组在索引 0 处的数据:

[[-208.  -16.]
[-192.  -16.]
[-192.    0.]
[-208.    0.]]
[[ 1.  1.  1.]
[ 1.  1.  1.]
[ 1.  1.  1.]
[ 1.  1.  1.]]
[[ 0.49609375  0.984375  ]
[ 0.25390625  0.984375  ]
[ 0.25390625  0.015625  ]
[ 0.49609375  0.015625  ]]

在这种情况下,串联的目标数组将如下所示:

[-208, -16, 1, 1, 1, 0.496, 0.984, -192, -16, 1, 1, 1, ...]

然后继续索引 1。

我不知道如何实现这一点,因为连接函数只是一直告诉我形状不匹配。目标数组的形状并不重要,只是它的内存视图必须按照给定的顺序上传到 GPU 着色器。

编辑:我可以用一些python for loops来实现这一点,但是性能影响将是这个程序的一个问题。

使用np.dstack并用np.ravel()展平 -

np.dstack((a,b,c)).ravel()

现在,np.dstack基本上是沿着第三个轴堆叠的。所以,或者我们也可以沿该轴使用np.concatenate,就像这样——

np.concatenate((a,b,c),axis=2).ravel()

示例运行 -

1( 设置输入数组:

In [613]: np.random.seed(1234)
...: n = 3
...: m = 2
...: a = np.random.randint(0,9,(n,m,2))
...: b = np.random.randint(11,99,(n,m,2))
...: c = np.random.randint(101,999,(n,m,2))
...: 

2( 检查输入值:

In [614]: a
Out[614]: 
array([[[3, 6],
[5, 4]],
[[8, 1],
[7, 6]],
[[8, 0],
[5, 0]]])
In [615]: b
Out[615]: 
array([[[84, 58],
[61, 87]],
[[48, 45],
[49, 78]],
[[22, 11],
[86, 91]]])
In [616]: c
Out[616]: 
array([[[104, 359],
[376, 560]],
[[472, 720],
[566, 115]],
[[344, 556],
[929, 591]]])

3( 输出 :

In [617]: np.dstack((a,b,c)).ravel()
Out[617]: 
array([  3,   6,  84,  58, 104, 359,   5,   4,  61,  87, 376, 560,   8,
1,  48,  45, 472, 720,   7,   6,  49,  78, 566, 115,   8,   0,
22,  11, 344, 556,   5,   0,  86,  91, 929, 591])

我要做的是:

np.hstack([a, b, c]).flatten()

假设 a、b、c 是三个数组

相关内容

  • 没有找到相关文章

最新更新