鉴于这个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
不会破坏原始的连续订单?
当然,预期结果应该是17
中b
之前和之后的数字与a
中的数字相同。
答案 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])