python - reshape 数组内不同维度的 numpy 数组

标签 python arrays numpy neural-network particle-swarm

所以任务是使用 PSO 优化神经网络。 PSO 需要所有权重和偏差的一维列表,如 [0.1 0.244 ... 0.214]。神经网络需要不同维度的数组,例如 [[x,y], [m,n], ...(所有隐藏层矩阵)...,[p,q]] X 和 y 是输入层的尺寸,然后是所有隐藏层,最后是 p 和 q - 输出层的尺寸。

我可以轻松地展平数组以将其传递给 PSO,但我需要一种方法来获取修改后的数组并将其重新整形回与 NN 中的起始数组具有相同维度的数组数组。

尺寸取决于层中神经元的数量,我们从一开始就拥有该信息。

我试图跟踪形状数组并创建一个索引数组以知道何时停止,但它似乎不起作用。我现在正在尝试切片,但还没有雪茄。对神经网络进行修改也是可能的,但如何创建它以使其采用预定义的权重列表?可能有一个非常好的和有效的方法来做到这一点,但我只是还没有想到......有什么建议吗?

示例:

a = np.array([1,2,3])
b = np.array([7,8,9,10])
c = np.array([12,13,14,15,16])
b.reshape(2,2)
arr = []
arr.append(a)
arr.append(b)
arr.append(c)

这是一个非常简单的示例,说明神经网络使用的权重列表是什么 - 多维数组列表。如果需要,可以使用 np.asarray(arr) 将 Arr 转换为 numpy 对象数组。

扁平化很容易,这就是我的做法(可能有更好的不需要循环的方法,如果你知道,如果你分享,我将不胜感激)。

展平:

new_arr = np.array([])
for i in range(len(arr)):
    new_arr = np.append(arr, arr[i].flatten())

我的问题是如何将 new_arr 重新组合起来看起来像 arr ,是否有一种美观且快速的方法来做到这一点。

最佳答案

您可以将形状保存在变量中(它只是一个元组)。尝试这样的事情:

...
old_shape = arr.shape

# ... do flattening here

new_arr.reshape(old_shape)

关于python - reshape 数组内不同维度的 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58996107/

相关文章:

Python 表单处理替代方案

python - 如何根据另一个数组中的重复值添加一个数组中的值?

python - 使用 numpy 和后处理导入多个文本文件(大量)

python - Pandas 将 csv 文件值读取为文本而不先转换为 float

python - Python 关键字文档和引用 Material 可能发生变化

javascript - lodash 字段的唯一计数

python - 将数组中的某些元素相乘

python - 求傅立叶系数算法

python - 复制大文件时 os.stat 不会更新

python - 分割并附加每第二个逗号到数组