python - 如何成对合并多个数组

标签 python arrays

我在将数组“配对”为一个(按索引)时遇到问题。这是一个例子:

输入:

inputArray = [[0, 1, 2, 3, 4], [2, 3, 5, 7, 8], [9, 6, 1]]

预期输出:

outputArray = 
[[0,2,9],
[1,3,6],
[2,5,1],
[3,7,chooseRandom()],
[4,8,chooseRandom()]]

问题:

  1. 如何避免“out of range”“index error”问题
  2. 如何编写chooseRandom()来选择N个邻居

答案:

  1. [已解决] @jonrsharpe & @Christian & @Decency 提供的解决方案作为 预计

澄清:

N 个邻居我的意思是: enter image description here

我正在使用 python,但请随时用任何语言分享您的想法。

最佳答案

我认为以下会做你想做的事:

from itertools import izip_longest # 'zip_longest' in Python 3.x
from random import choice

# Step 1
outputArray = list(map(list, izip_longest(*inputArray)))
# Step 2
for index, arr in enumerate(outputArray):
    if any(item is None for item in arr):
        valid = [item for item in arr if item is not None]
        outputArray[index] = [choice(valid) if item is None else item 
                              for item in arr]

这有两个步骤:

  1. inputArray的所有子列表合并到最长子数组的长度,用None填充:[[0, 2, 9], [1, 3, 6], [2, 5, 1], [3, 7, 无], [4, 8, 无]];和
  2. 遍历 outputArray,找到包含 None 的所有子列表,并将 None 替换为从其他项目中随机选择的内容不是 None 的子列表。

示例输出:

[[0, 2, 9], [1, 3, 6], [2, 5, 1], [3, 7, 3], [4, 8, 8]]

关于python - 如何成对合并多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23936715/

相关文章:

iphone - 在 Swift 的另一个数组中删除数组中的项目

Python-从长度不等的列表列表中获取所有唯一组合并进行替换

python - C&Python混合编程出现 'Segmentation fault'怎么解决?

python - 通过在列中重复范围来分隔 pandas df

python - 无法在 us-central1 中更新加密 key

java - 使用普通 JAVA Stream 收集 int 数组的值

java - 如何解析包含多个数组的 JSON 文件?

c# - 带范围的数字的推荐组合算法

Java,如何拆分列表的元素?

python - 同时使用带参数和不带参数的装饰器