根据默认大小重塑np.array

时间:2019-04-08 21:01:23

标签: python numpy reshape numpy-ndarray valueerror

有2个np.arrays,我想将形状为{{1}的np.array1的形状从(12,)重塑为array2

(4,)array1 = np.array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) 返回:array1.shape

(12,)array2 = np.array([ 12, 34, 56, 78]) 返回:array2.shape

我尝试执行(4,)

reshape

但是,有一个错误: array1.reshape(array2.shape)

因此,预期结果为ValueError: cannot reshape array of size 12 into shape (4,),其中包含4个元素: array1, 而不是12。

感谢您的任何想法和帮助。

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的要求,我认为您正在寻找的是简单切片:

In [140]: array2 = np.array([ 12,  34,  56,  78])
In [135]: a_sliced =  array1[:array2.shape[0]]
In [136]: a_sliced.shape
Out[136]: (4,)

如果array2是多维的,则使用approach suggested by Mad Physicist

sliced_arr = array1[tuple(slice(0, d) for d in array2.shape)]

或者,如果您打算将数组分成三个相等的部分,则使用numpy.split(),如下所示:

# split `array1` into 3 portions
In [138]: np.split(array1, 3)
Out[138]: [array([1, 2, 3, 4]), array([5, 6, 7, 8]), array([ 9, 10, 11, 12])]