根据默认大小重塑 np.array
Reshape np.array based on the default size
有 2 个 np.arrays,我想从形状 (12,)
参考 array2
重塑 np.array1
形状 (4,)
:
array1 = np.array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
和
array1.shape
returns: (12,)
array2 = np.array([ 12, 34, 56, 78])
和
array2.shape
returns: (4,)
我尝试执行 reshape
:
array1.reshape(array2.shape)
但是,有一个错误:
ValueError: cannot reshape array of size 12 into shape (4,)
因此,预期结果是 array1
,包含 4 个元素:
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
是多维的,那么使用:
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])]
有 2 个 np.arrays,我想从形状 (12,)
参考 array2
重塑 np.array1
形状 (4,)
:
array1 = np.array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
和
array1.shape
returns: (12,)
array2 = np.array([ 12, 34, 56, 78])
和
array2.shape
returns: (4,)
我尝试执行 reshape
:
array1.reshape(array2.shape)
但是,有一个错误:
ValueError: cannot reshape array of size 12 into shape (4,)
因此,预期结果是 array1
,包含 4 个元素:
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
是多维的,那么使用
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])]