python - 如何将二维数组与块大小连接起来
问题描述
我有以下二维数组,我想找到一种方法来生成另一个二维数组,但数据与块大小相连。
array_2d = [
[0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,1],
[0,0,0,0,0,1,1,1],
[0,0,0,0,0,0,1,1],
[0,0,0,0,0,1,1,1]
]
例如,块大小为 2 时,上述二维数组将更改为:
array_2d = [
[0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1]
]
请注意,最后一个元素已在左侧填充零。
感谢帮助。
解决方案
array_2d = [
[0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,1],
[0,0,0,0,0,1,1,1],
[0,0,0,0,0,0,1,1],
[0,0,0,0,0,1,1,1]
]
def chunkconcat(chunk, init_data):
data_arr = init_data
# padding
while (len(data_arr) % chunk) != 0:
data_arr.append([0 for _ in range(len(data_arr[0]))])
# division into smaller chunks
divide_data = [data_arr[i*chunk:(i+1)*chunk] for i in range(int(len(data_arr)/chunk))]
print(divide_data)
new_arr = []
# use the slices by reversing order and concatenating them
for slice in divide_data:
tmp = []
for ind in range(chunk):
tmp.append(slice[-1])
slice.pop()
new_arr.append(np.concatenate(tmp))
final_data = np.array(new_arr)
print(final_data)
chunkconcat(2, array_2d)
所以你也可以按照解决方案,在此基础上构建自己的解决方案,我明确地做到了。
基本上,您首先填充零向量,以便能够进行所需的转换/连接,或者您想调用它。
之后,您将数据集划分为所需块大小的较小部分。颠倒顺序并将其传递给临时列表使我们能够正确地获得顺序并将它们连接起来,然后我们将结果添加到最终列表(“矩阵”)中。
在最后一步将其转换为 numpy 数组以获得实数矩阵。
使用预定义的函数和列表推导,您可以在几行内解决这个问题,但我猜这对您没有太大帮助。
小心。
推荐阅读
- javascript - 无法设置本地存储
- c# - ASP.NET:如何使用命令行在文件夹中发布
- php - 在工艺品商业下订单后检索订单详细信息
- javascript - Ajax 调用使 jQuery 代码行为不端并破坏布局
- ios - 为不同的目标声明常量
- c++ - 从 C++ 代码通过 PQsendQuery 执行 sql 时 Postgres SQL 解析错误 - SQLState:42601 消息:在“”或附近出现语法错误
- mysql - 如何在单个语句中使用 AND 和 OR
- excel - 批量修改条目电子表格 - excel libreoffice calc
- reactjs - preload.ts 中的 contextBridge.exposeInMainWorld:ipcRenderer 接收到来自 main.ts 的消息,但渲染器没有得到它
- javascript - 根据“喜欢”状态更改 SVG 图标颜色