我正在尝试将numpy.array
的形状从形状(4,4)更改为形状(2,2,2,2)。我收到的错误是:
ValueError: could not broadcast input array from shape (2,2,2,2) into shape (4,4).
这使我认为我的形状是向后的,但经过检查却并非如此。
我有一个用户定义的函数,该函数使用np.reshape将数组重新整形为某个形状(如果还不是该形状)。我尝试消除用户定义的函数,仅使用np.reshape,但是它返回了相同的错误。我想念什么?
重塑功能:
def reshape(matrix, ports, modes):
shape = (ports, ports, modes, modes)
if(np.shape(matrix) != shape): #reshape if necessary
return np.reshape(matrix, shape)
else:
return matrix
我在哪里称呼此功能:
def plot(S, F, ports, modes, x_range, y_range, title, f_units,
multi_modal = True):
data = {} #create dictionary to store S-parameters
if(not multi_modal): #if we want average
for f in range(0, len(F)): #iterate through frequencies
print(np.shape(S[f]))
S[f] = reshape(S[f], ports, modes)
在这种情况下,端口= 2,模式= 2。
S[f]
是形状(4,4)的np.array:
[[ 1.00000000e+00+0.00000000e+00j -1.02728868e-19+1.64952184e-22j
-1.37762998e-20+2.40441793e-24j -4.18063430e-24-1.18287261e-21j]
[ 0.00000000e+00-0.00000000e+00j -1.00000000e+00+1.22464680e-16j
3.03393173e-26-1.77961140e-24j 1.57277027e-25+2.06062998e-23j]
[-1.95100984e-27+3.66506948e-24j 2.38762635e-25+1.48052807e-22j
1.00000000e+00+0.00000000e+00j 2.90518731e-20+1.33913685e-17j]
[-3.47614015e-25-4.08540212e-23j -3.30653510e-21+2.87402660e-23j
1.77338192e-21+2.27000073e-19j -1.00000000e+00+1.22464680e-16j]]
为什么返回错误:
ValueError: could not broadcast input array from shape (2,2,2,2) into shape (4,4)
何时应将其从(4,4)重塑为(2,2,2,2)?
答案 0 :(得分:0)
可以做到
def plot(S, F, ports, modes, x_range, y_range, title, f_units,
multi_modal = True):
data = {} #create dictionary to store S-parameters
if(not multi_modal): #if we want average
for f in range(0, len(F)): #iterate through frequencies
print(np.shape(S[f]))
S_reshaped = reshape(S[f], ports, modes)
如果您需要存储结果,可以创建一个空列表,然后将重新排列的数组附加到该列表中。
def plot(S, F, ports, modes, x_range, y_range, title, f_units,
multi_modal = True):
data = {} #create dictionary to store S-parameters
S_reshaped=[]
if(not multi_modal): #if we want average
for f in range(0, len(F)): #iterate through frequencies
print(np.shape(S[f]))
S_reshaped.append(reshape(S[f], ports, modes))