Numpy Python R等价索引

时间:2019-02-25 13:07:09

标签: python r numpy data-science

import numpy as np

o = np.array([

              [
              [1,2,3,4],
              [5,6,7,8]
              ],

              [
              [9,10,11,12],
              [13,14,15,16]
              ]

             ])
print(o.flatten())

# array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16])

首先将每个矩阵的行变平

但是我希望它首先使每个矩阵的列变平,以便打印 [1,5,2,6,3,7,4,8,9,13,10,14,11,15,12,16]

我尝试搜索,发现通过传递“ F”作为参数,但是得到[1,5,9,13,2,6,10,14,3,7,11,15,4,8, 12,16] 也就是说,它无需先完成即可切换到另一个矩阵。

简而言之,我想用双括号找到与R索引相同的python

someData <- rep(0, 2*3*4);
ar <- array(someData, c(2, 3, 4));  
ar[1,1,1] = 1
ar[1,2,1] = 2
ar[1,3,1] = 3

ar[2,1,1] = 4
ar[2,2,1] = 5
ar[2,3,1] = 6

ar[1,1,2] = 7
ar[1,2,2] = 8
ar[1,3,2] = 9
print(ar[[1]]) # 1
print(ar[[2]]) # 4
print(ar[[3]]) # 2
print(ar[[4]]) # 5 
print(ar[[5]]) # 3
print(ar[[6]]) # 6

1 个答案:

答案 0 :(得分:3)

您可以先在第二维上执行np.concatenate,然后再按列主要顺序flatten进行操作,就像您提到的那样:

np.concatenate(o, axis=1).flatten(order='f')

输出

array([ 1,  5,  2,  6,  3,  7,  4,  8,  9, 13, 10, 14, 11, 15, 12, 16])