重新排列numpy数组

刀柄加利奇

我需要解析两个对象随时间变化的位置,并在numpy数组中获取数据:

data = [[0, 1, 2],
        [1, 4, 3],
        [2, 2, 1]]

因此第一列代表一个位置,第二列代表时间点A在那个特定位置,最后一个列时间是点B在那个位置。保证数据是一致的,也就是说,如果任何两行具有相同的时间-它们在伪代码中具有相同的位置:

data[row1,1] == data[row2,1]  <=>  data[row1,0] == data[row2,0]
data[row1,2] == data[row2,2]  <=>  data[row1,0] == data[row2,0]

我想拥有的是以某种方式重铸此数组,以便它将枚举所有可用时间和相应位置,例如:

parsed = [[1, 0, 2],
          [2, 2, 0],
          [3, np.nan, 1],
          [4, 1, np.nan]]

在这里,第一列是时间,第二列是点A的位置,第三列是点B的位置。当我没有关于点位置的信息时,应分配np.nan。我目前要做的是将数据数组分成两个单独的数组:

    moments = set (data [:, 1:3].flatten())

    for each in moments:
        a = data[:,[1,0]][pos[:,1] == each]
        b = data[:,[2,0]][pos[:,2] == each]

然后我按照约翰·高尔特(John Galt)的回答重新合并这可以以某种方式起作用,但是我真的希望可能会有更好的解决方案。有人可以向正确的方向踢我吗?

迪卡卡

这是使用NumPy数组初始化和赋值的一种方法-

# Gather a and b indices. Get their union, that represents all posssible indices
a_idx = data[:,1]
b_idx = data[:,2]
all_idx = np.union1d(a_idx, b_idx)

# Setup o/p array 
out = np.full((all_idx.size,3),np.nan)

# Assign all indices to first col
out[:,0] = all_idx

# Determine the positions of a indices in all indices and assign first col data
out[np.searchsorted(all_idx, a_idx),1] = data[:,0]
# Similarly for b
out[np.searchsorted(all_idx, b_idx),2] = data[:,0]

np.searchsorted此处的行为就像天赐之物,因为它为我们提供了需要放入已排序数组ab从中data排序的位置,all_idx并且效率很高。

给定样本数据的输出-

In [104]: out
Out[104]: 
array([[  1.,   0.,   2.],
       [  2.,   2.,   0.],
       [  3.,  nan,   1.],
       [  4.,   1.,  nan]])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

重新排列NumPy数组中的值

来自分类Python

重新排列numpy 2D数组的列

来自分类Dev

按列值重新排列numpy多级数组

来自分类Dev

如何重塑/重新排列此numpy数组列表

来自分类Dev

如何按特定顺序重新排列Numpy数组?

来自分类Dev

如何重新排列3D Numpy数组?

来自分类Dev

以numpy重新排列轴?

来自分类Dev

重新排列JavaScript数组

来自分类Dev

重新排列数组索引雄辩的Laravel

来自分类Dev

在cmd中重新排列数组元素

来自分类Dev

在Python中重新排列数组

来自分类Dev

排序和重新排列(不同的)数组

来自分类Dev

重新排列Python argparse参数组

来自分类Java

用Java重新排列数组

来自分类Dev

AngularJS $ scope数组对象重新排列

来自分类Dev

在React JS中重新排列数组

来自分类Dev

如何在numpy中通过子数组优雅地重新排列数组?

来自分类Dev

如何重新排列Numpy数组:2D到3D?

来自分类Python

如何快速重新排列扁平的“锯齿状” numpy数组

来自分类Dev

Python,按列0值重新排列一个numpy数组,带符号整数

来自分类Python

在数组中重新排列数组中的数组

来自分类Java

重新排列读取

来自分类Dev

根据嵌套数组重新排列对象数组

来自分类Python

如何基于索引数组重新排列数组

来自分类Javascript

如何通过索引数组重新排列数组?

来自分类Dev

Javascript-按数组重新排列对象数组(值)

来自分类Dev

在数组数组中重新排列值

来自分类Dev

重新排列numpy数组中的元素以在2d中绘制3d数组,并保留分组

来自分类Dev

重新排列和聚合numpy矩阵中的列

TOP 榜单

热门标签

归档