将n维numpy数组转换为2维索引数组

TDN169

我想转换一个这样的n维numpy数组:

[ [ a, b, c],
  [ d, e, f] ]

到的2维阵列axis_0_indexaxis_1_indexcell_value

[ [ 0, 0, a],
  [ 0, 1, b],
  [ 0, 2, c],
  [ 1, 0, d],
  [ 1, 1, e],
  [ 1, 2, f] ]

在NumPy中可以轻松做到这一点吗?

tobias_k

您可以使用(滥用吗?)np.where获取数组的所有索引,使用条件与形状相同的数组,然后将这些索引与(展平的)数组堆叠,最后进行转置。

>>> A = np.array([ [ 'a', 'b', 'c'], [ 'd', 'e', 'f'] ])
>>> ones = np.ones(A.shape)
>>> np.vstack(np.where(ones) + (A.ravel(),)).transpose()
array([['0', '0', 'a'],
       ['0', '1', 'b'],
       ['0', '2', 'c'],
       ['1', '0', 'd'],
       ['1', '1', 'e'],
       ['1', '2', 'f']], 
      dtype='|S1')

经过更多搜索后,它可能更干净使用np.indices

>>> X, Y = np.indices(A.shape)
>>> np.vstack((X.ravel(), Y.ravel(), A.ravel())).T

或者

>>> np.vstack((X, Y, A)).reshape(3,A.size).T

在两种情况下,结果均与上述相同。


我使用IPython的进行了一些时序分析%timeit奇怪的是,我的第一个解决方案where似乎最快,至少对于这个很小的测试阵列而言:

>>> %timeit f1() # using ones and np.where
10000 loops, best of 3: 72.3 us per loop
>>> %timeit f2() # using np.indices and ravel
10000 loops, best of 3: 125 us per loop
>>> %timeit f3() # using np.indices and reshape
10000 loops, best of 3: 110 us per loop
>>> %timeit g() # using meshgrid
10000 loops, best of 3: 134 us per loop

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将一维“扁平化”索引转换为N维数组的N维矢量索引

来自分类Dev

将3维数组转换为2维数组

来自分类Dev

根据Python中的变量将n维numpy数组转换为2D数组

来自分类Dev

将(2,2,2 ... n)的numpy.sum()nD数组转换为形状(2,)的一维数组

来自分类Dev

将numpy矩阵转换为一维numpy数组

来自分类Dev

将numpy矩阵转换为一维numpy数组

来自分类Dev

将3维Numpy数组转换为4维Numpy数组

来自分类Dev

将一维numpy数组转换为列表列表

来自分类Dev

Python将列表转换为二维numpy数组

来自分类Dev

使用 NumPy 将方阵转换为一维数组

来自分类Dev

将一维数组转换为二维数组

来自分类Dev

将一维数组转换为二维数组

来自分类Dev

将二维数组转换为单维数组

来自分类Dev

将一维数组转换为二维数组

来自分类Dev

将一维数组转换为二维数组

来自分类Dev

在保持网格顺序的同时将2维数组转换为1维数组

来自分类Dev

将2D Numpy数组转换为一维列的列表

来自分类Dev

将mysqli查询结果转换为2维数组

来自分类Dev

将一维“多维”数组转换为一维

来自分类Dev

将一维“多维”数组转换为一维

来自分类Dev

在Python中,如何将数值数组列表转换为简单的一维numpy数组?

来自分类Dev

在Python中,如何将数值数组列表转换为简单的一维numpy数组?

来自分类Dev

将嵌套数组转换为一维数组

来自分类Dev

将元组数组转换为二维数组

来自分类Dev

将一维数组转换为多维数组

来自分类Dev

将连续的内存块转换为高维数组,以便于索引编制

来自分类Dev

在for循环中检查numpy数组的维度,然后将二维数据转换为一维数据

来自分类Dev

如何使用形状(N,)的一维数组索引维N的numpy数组

来自分类Dev

Numpy数组丢失了转换为TF数据集的维

Related 相关文章

  1. 1

    将一维“扁平化”索引转换为N维数组的N维矢量索引

  2. 2

    将3维数组转换为2维数组

  3. 3

    根据Python中的变量将n维numpy数组转换为2D数组

  4. 4

    将(2,2,2 ... n)的numpy.sum()nD数组转换为形状(2,)的一维数组

  5. 5

    将numpy矩阵转换为一维numpy数组

  6. 6

    将numpy矩阵转换为一维numpy数组

  7. 7

    将3维Numpy数组转换为4维Numpy数组

  8. 8

    将一维numpy数组转换为列表列表

  9. 9

    Python将列表转换为二维numpy数组

  10. 10

    使用 NumPy 将方阵转换为一维数组

  11. 11

    将一维数组转换为二维数组

  12. 12

    将一维数组转换为二维数组

  13. 13

    将二维数组转换为单维数组

  14. 14

    将一维数组转换为二维数组

  15. 15

    将一维数组转换为二维数组

  16. 16

    在保持网格顺序的同时将2维数组转换为1维数组

  17. 17

    将2D Numpy数组转换为一维列的列表

  18. 18

    将mysqli查询结果转换为2维数组

  19. 19

    将一维“多维”数组转换为一维

  20. 20

    将一维“多维”数组转换为一维

  21. 21

    在Python中,如何将数值数组列表转换为简单的一维numpy数组?

  22. 22

    在Python中,如何将数值数组列表转换为简单的一维numpy数组?

  23. 23

    将嵌套数组转换为一维数组

  24. 24

    将元组数组转换为二维数组

  25. 25

    将一维数组转换为多维数组

  26. 26

    将连续的内存块转换为高维数组,以便于索引编制

  27. 27

    在for循环中检查numpy数组的维度,然后将二维数据转换为一维数据

  28. 28

    如何使用形状(N,)的一维数组索引维N的numpy数组

  29. 29

    Numpy数组丢失了转换为TF数据集的维

热门标签

归档