我有两个2D numpy数组 - 真实r
,它包含由它们的笛卡尔坐标给出的空间点和v
,在每个数组中定义一个复数向量这些点。我想根据r
上的一些条件拆分这两个数组。如何根据其中一个条件有效地分割一对数组
例如,r1
包含具有第一笛卡尔坐标的所有点是正的,并且v1
给出v
的对应值。所有其他点及其相应的矢量进入。
基于this question,而事实上,zip
基本上是它自己的倒数,目前,我有以下解决方案:
r1, v1 = zip(*[rv for rv in zip(r, v) if rv[0][0] > 0.0])
r2, v2 = zip(*[rv for rv in zip(r, v) if rv[0][0] <= 0.0])
r1 = np.array(r1)
r2 = np.array(r2)
v1 = np.array(v1)
v2 = np.array(v2)
此作品不够好,我的目的,但是它涉及到转换到阵列的大名单,这肯定是非常低效的。
是否有替代解决方案,它是快速,简洁并避免创建中间列表的?
非常好,我不知道你可以用一个布尔数组来索引东西 – steabert