有2个np.arrays,我想从形状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
:np.array([ 1, 2, 3, 4])
,
而不是12。
感谢您的任何想法和帮助。
最佳答案
如果我正确理解了您的需求,我认为您正在寻找的只是简单的切片:
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])]
关于python - 根据默认大小重塑np.array,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55581685/