重塑不改变数组的形状

时间:2020-06-26 13:35:00

标签: python numpy numpy-ndarray

代码在这里:

a1 = np.random.permutation(10)
print("before :" + str(a1.shape))
a1.reshape((1,10))
print("after  :" + str(a1.shape))

结果:

before :(10,)
after  :(10,)

我很困惑。为什么会这样?

1 个答案:

答案 0 :(得分:1)

Numpy的reshape不会就地修改数组(有关替代方法,请参见this answer)。您可以ndarray.resize(确实会修改形状in-place或将重新成形的视图再次分配给a1

a1 = np.random.permutation(10)

a1.reshape((1,10))
a1.shape
# (10,)

a1.resize((1,10))
a1.shape
# (1, 10)

或者

a1 = a1.reshape((1,10))