Python,操纵nd.arrays:合并,替换数据

时间:2014-02-10 00:29:44

标签: python arrays numpy

我有3个名为verticesbcoordstet的numpy.ndarray,其中包含以下shape

vertices    (1965, 4, 6) 
tet         (1048576,)    
bcoords     (1048576, 4)  

我想访问ndarrays中的数据来进行一些操作。

_

tet包含引用vertices

中的值的数字(索引)

tetbcoords中的值序列相同


EDIT2:

vertices    (1965, 4, 6)

vertices中的值为1965单纯形,由4个点定义,每个point6个值R, G, B, X, Y, Z定义

使用每个X, Y, Z的{​​{1}}坐标的Delaunay三角剖分计算单纯形

point

tet (1048576,) bcoords (1048576, 4) 中的值是单纯形的索引。它们是使用tet 1048576(结构:target)列表制作的。其中一个单纯形式可能包含或不包含X, Y, Z

如果目标是单形,则tet包含1965个索引中的一个,如果不是,target包含值tet

-1中的值是bcoords

列表的重心坐标

我想通过targettet(或者更好地同时通过两个)来循环播放bcoords(即如果vertices } return tet我想获得数组10的第10个值),同时我想得到vertices

中的4个相应值

编辑:

我写了“如果bcoords返回tet我想获得数组的第10个值10

我的意思是vertices的{​​{1}},它包含的数据,以下是一些示例:

row给出:

vertices

索引列表

print tet给出:

[1758 1758 1758 ...,   33   33   33] 

4点清单


我该怎么做?

  • 我应该合并print vertices[1758][[ 63. 0. 63. 4.56112396 3.97230907 5.22919258] [ 0. 0. 95. 4.05451235 4.07627874 7.38992147] [ 63. 0. 0. 5.91857152 5.28300682 4.5745692 ] [ 0. 63. 63. 4.20672279 5.43250873 6.32627709]] 吗?如果是,我该怎么做?

    或者有没有办法同时循环遍历2个阵列?

  • 如何使用tet中包含的值替换bcoords的值(tet中的值的索引)?

  • 这是vertices存在的原因之一,如果是,在这种特殊情况下如何使用它?

由于

1 个答案:

答案 0 :(得分:0)

如果你有足够的内存,只需使用花哨的索引:

mask = tet != -1
tet2 = tet[mask]
bcoords2 = bcoords[mask, :]
vertices2 = vertices[tet2]