首页 > 解决方案 > 根据默认大小重塑 np.array

问题描述

有 2 个 np.arrays ,我想np.array1从 shape(12,)参考array2with shape重塑(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,)

因此,预期结果是array14 个元素: np.array([ 1, 2, 3, 4]),而不是 12。

我很感激任何想法和帮助。

标签: pythonnumpyreshapenumpy-ndarrayvalueerror

解决方案


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

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是多维的,则使用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])]

推荐阅读