import numpy as np
a = np.arange(36)
print a.shape
(36)
a = a.reshape(3,*(3,4))
print a.shape
(适用3,3,4)
首先,我认为*(3,4)可能是一个参数。所以我帮助(np.reshape)。
a : array_like
Array to be reshaped.
newshape : int or tuple of ints
The new shape should be compatible with the original shape. If
an integer, then the result will be a 1-D array of that length.
One shape dimension can be -1. In this case, the value is inferred
from the length of the array and remaining dimensions.
order : {'C', 'F', 'A'}, optional
Read the elements of `a` using this index order, and place the elements
into the reshaped array using this index order. 'C' means to
read / write the elements using C-like index order, with the last axis
index changing fastest, back to the first axis index changing slowest.
'F' means to read / write the elements using Fortran-like index order,
with the first index changing fastest, and the last index changing
slowest.
Note that the 'C' and 'F' options take no account of the memory layout
of the underlying array, and only refer to the order of indexing. 'A'
means to read / write the elements in Fortran-like index order if `a`
is Fortran *contiguous* in memory, C-like order otherwise.
我找不到可以匹配*(3,4)的正确参数。那么如何以这种方式理解*(3,4)的用法?
答案 0 :(得分:2)
*(3,4)
解包元组,使其与执行a.reshape(3,3,4)
完全相同。如果(3,4)
是一个变量,那么使用他解包是真的有意义,即:
t = (3,4)
a.reshape(3,*t) # same as a.reshape(3, t[0], t[1])
答案 1 :(得分:-1)
*将解压缩值。
所以,a = a.reshape(3,*(3,4))
与a = a.reshape(3, 3, 4)
相同
结果是(3,3,4)