保留 numpy 二维数组的顺序
Preserving sequential order of numpy 2D arrays
给定这个二维 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
中值的顺序13=]? 例如,我怎样才能 check/ensure 使 numpy.ravel
不会弄乱原来的顺序?
当然,预期的结果应该是 b
中 17
前后的数字,例如,与 a
中的数字相同。
首先,您需要阐明 "sequential" 顺序对您意味着什么,因为 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])
给定这个二维 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
中值的顺序13=]? 例如,我怎样才能 check/ensure 使 numpy.ravel
不会弄乱原来的顺序?
当然,预期的结果应该是 b
中 17
前后的数字,例如,与 a
中的数字相同。
首先,您需要阐明 "sequential" 顺序对您意味着什么,因为 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])