我目前
np.append
与两个数组组合,但它不能工作,它显示:
ValueError: all the input array dimensions except for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 64 and the array at index 1 has size 0
这是我的代码
weights_block_32_0 = weights_block_32[0][0:block_size]
print(weights_block_32_0)
print(weights_block_32[0][block_size * (i+1):block_size * (i+2)])
for i in range(count - 1):
weights_block_32_0 = np.append(weights_block_32_0, weights_block_32[0][block_size * (i+1):block_size * (i+2)], 1)
输出
[[-0.11692056 -0.21988727 -0.2782506 ... -0.20971598 -0.358836
0.365253 ]
[-0.1029752 -0.05929758 -0.14116701 ... -0.11534233 -0.01058054
0.10387182]
[ 0.21475197 0.4043065 0.01345642 ... 0.04622769 0.21393798
-0.12899256]
...
[ 0.08888344 -0.04325306 0.02912059 ... 0.09227641 -0.0109155
-0.09982339]
[ 0.0463181 0.04997677 0.07291862 ... -0.04850281 -0.04819945
-0.02194837]
[-0.06676714 0.02217779 0.06599618 ... -0.06789055 0.00419611
0.09231257]]
[]
ValueError: all the input array dimensions except for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 64 and the array at index 1 has size 0
此错误发生的原因是,尝试将形状不同的数组连接起来。虽然
weights_block_32_0
是一个二维数组(从打印的输出中可以看出),但切片
weights_block_32[0][block_size * (i+1):block_size * (i+2)]
在某些迭代中会产生一个空数组。这解释了错误消息“维度 0 上索引 0 处的数组大小为 64,而索引 1 处的数组大小为 0”。
以下是一些可能的解决方法:
-
检查的切片: 错误的主要原因是切片
weights_block_32[0][block_size * (i+1):block_size * (i+2)]
会导致一个空数组。验证的block_size
、i
和weights_block_32
数组的形状是否与的预期相符。确保切片实际上返回了打算连接的数据。 -
在连接之前处理空数组: 可以添加一个条件来跳过空数组或连接一个默认值。例如:
python for i in range(count - 1): temp = weights_block_32[0][block_size * (i+1):block_size * (i+2)] if temp.size != 0: weights_block_32_0 = np.append(weights_block_32_0, temp, 1)
-
使用列表进行动态连接:
np.append
用于就地连接可能效率不高,尤其是在循环中。考虑将数组附加到列表中,然后在最后使用np.concatenate
进行一次连接。例如:
python
all_weights = [weights_block_32_0]
for i in range(count - 1):
temp = weights_block_32[0][block_size * (i+1):block_size * (i+2)]
if temp.size != 0:
all_weights.append(temp)
weights_block_32_0 = np.concatenate(all_weights, axis=1)
请提供有关
weights_block_32
、
block_size
和
count
变量的更多上下文或它们的实际值,以便我帮助调试特定问题。例如,了解
weights_block_32
的形状及其预期输出将非常有帮助。