使用另一个数组更改数组的形状

时间:2015-07-21 09:48:14

标签: python numpy

我想使用其他数组重塑一个数组。

说我有array_1,其shape(5, 1),例如:

>>> array_1
array([[ 0.33333333],
       [ 0.36666667],
       [ 0.16666667],
       [ 0.06666667],
       [ 0.06666667]]

array_2,其形状为(1, 5)。我想重新塑造array_1,使其形状为array_2。每次运行代码时,array_2的形状都会发生变化。

2 个答案:

答案 0 :(得分:4)

假设numpy数组,只需使用array_1.reshape(array_2.shape)

>>> import numpy as np
>>> arr1 = np.arange(5).reshape(5, 1)
>>> arr2 = np.arange(5, 10).reshape(1, 5)
>>> arr1
array([[0],
       [1],
       [2],
       [3],
       [4]])
>>> arr2
array([[5, 6, 7, 8, 9]])
>>> arr1.reshape(arr2.shape)
array([[0, 1, 2, 3, 4]])
>>> arr2.reshape(arr1.shape)
array([[5],
       [6],
       [7],
       [8],
       [9]])

请注意,这不是就地;它会创建一个新数组,因此您需要分配例如array_1 = array_1.reshape(...)

答案 1 :(得分:2)

在这种情况下你应该使用numpy.transpose

import numpy as np

array_1 = [[ 0.33333333],
 [ 0.36666667],
 [ 0.16666667],
 [ 0.06666667],
 [ 0.06666667]]

print "Shape of original array_1: ", np.shape(array_1)

array_1 = np.transpose(array_1)

print array_1
print "Shape of transposed array_1: ", np.shape(array_1)

<强>输出:

Shape of original array_1:  (5, 1)
[[ 0.33333333  0.36666667  0.16666667  0.06666667  0.06666667]]
Shape of transposed array_1:  (1, 5)