numpy中reshape(-1)将二维数组转1维的内部排列规则是什么
numpy中reshape(-1)的转换逻辑与元素排列规则
1. reshape参数中-1的含义
numpy.reshape() 用于在不改变数组总元素数量的前提下,调整数组的维度形状。当你给某个维度的位置传入-1时,代表该维度的长度由numpy自动计算,计算规则为:总元素数 ÷ 其他所有维度的指定长度的乘积。
你给出的示例中只传入了一个-1,也就是明确要求输出1维数组,numpy会直接将总元素数作为该维度的长度:原数组是2行3列,总共有6个元素,所以自动生成一个长度为6的一维数组。
2. 内部元素的排列规则
默认采用*行优先(C风格顺序)*的规则排列:
- 对于二维数组,会优先取完第一行从左到右的所有元素,再依次取第二行、第三行的所有元素,最终拼接为一维数组。
- 你示例中的原数组为
[[1, 2, 3], [4, 5, 6]],按行优先规则拼接后,自然得到[1 2 3 4 5 6]的输出结果。
如果需要调整为列优先(Fortran风格顺序)排列,可额外指定order参数:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) # 按列优先转换为一维数组,输出为[1 4 2 5 3 6] newa_f = arr.reshape(-1, order='F')
内容的提问来源于stack exchange,提问作者user17344362
相关产品推荐
相关产品推荐

