我有一个1x17x3
形状的维数组,其输出如下所示
[[[x1 y1 z1]
[x2 y2 z2]
[x3 y3 z3]
[x17 y17 z17]]]
我要提取一维向量中的前两个元素,如下所示
vec1 = [x1,y1,x2,y2, ....... x17,y17]
vec20 [z1,z2,z3..............z17]
我试图展平整个数组并提取元素,但是我不确定那是正确的工作方式。
import numpy as np
test = np.random.rand(1,17,3)
print(test)
rev_mat = test.flatten()
print(rev_mat)
答案 0 :(得分:0)
让x表示形状为1x17x3的数组。
vec1 = np.empty(x.shape[1] * 2)
vec1[0::2] = x[:,:,0]
vec1[1::2] = x[:,:,1]
vec20 = x[:,:,2].squeeze()
希望有帮助!
答案 1 :(得分:0)
具有二维数组:
In [42]: arr = np.arange(12).reshape(4,3)
In [43]: arr
Out[43]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
我们可以通过以下方式获得前两列:
In [44]: arr[:,:2]
Out[44]:
array([[ 0, 1],
[ 3, 4],
[ 6, 7],
[ 9, 10]])
并使用ravel
In [45]: arr[:,:2].ravel()
Out[45]: array([ 0, 1, 3, 4, 6, 7, 9, 10])
第三列:
In [46]: arr[:,2]
Out[46]: array([ 2, 5, 8, 11])
您有3d,但是第一个维度是1,因此您可以将它“索引”为一种方式:
In [47]: arr = np.arange(12).reshape(1,4,3)
In [48]: arr
Out[48]:
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]]])
In [49]: arr[0,:,:2].ravel()
Out[49]: array([ 0, 1, 3, 4, 6, 7, 9, 10])