保持numpy 2D数组的连续顺序

时间:2017-01-29 18:51:10

标签: python arrays numpy sequential

鉴于这个2D numpy数组:

a=numpy.array([[31,22,43],[44,55,6],[17,68,19],[12,11,18],...,[99,98,97]])

需要使用numpy.ravel展平它:

b=numpy.ravel(a)

并且需要稍后将其转储到pandas数据框中,如何在应用a时确保保留numpy.ravel中值的顺序? 例如,如何检查/确保numpy.ravel不会破坏原始的连续订单?

当然,预期结果应该是17b之前和之后的数字与a中的数字相同。

1 个答案:

答案 0 :(得分:1)

首先,你需要制定什么"顺序"订单意味着您,因为numpy.ravel()确实保留了订单。以下是如何制定所需内容的提示:尝试使用最简单的玩具示例:

import numpy as np
X = np.arange(20).reshape(-1,4)

X
#array([[ 0,  1,  2,  3],
#   [ 4,  5,  6,  7],
#   [ 8,  9, 10, 11],
#   [12, 13, 14, 15],
#   [16, 17, 18, 19]])
X.ravel()
# array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 
#        13, 14, 15, 16, 17, 18, 19])

它符合您的期望吗?或者你想看到这个顺序:

Z = X.T
Z
# array([[ 0,  4,  8, 12, 16],
#        [ 1,  5,  9, 13, 17],
#        [ 2,  6, 10, 14, 18],
#        [ 3,  7, 11, 15, 19]])
Z.ravel()
# array([ 0,  4,  8, 12, 16,  1,  5,  9, 13, 17,  2,  6, 10, 
#         14, 18,  3,  7, 11, 15, 19])