【问题标题】:Concatenate arrays inside a tuple in simpler way以更简单的方式连接元组内的数组
【发布时间】:2021-02-05 09:58:49
【问题描述】:

我有一个元组 X,它的元素是二维 numpy 数组,它们具有相同的第一个维度和不同的第二个维度。我想连接这些数组以制作 1 个大数组。例如:

X = (np.array of shape[10,3], np.array of shape[10,5], np.array of shape[10,7])。 我想制作一个形状为 [10,15] 的最终数组 Y,它是元组 X 中所有元素的串联。

我做了这样的事情。它有效,但我问是否有任何更短/更简单的方法来做到这一点?谢谢!

def concat_arrays(data: tuple) -> np.ndarray:
    final_array = data[0]
    for i in range(len(data)):
        if i > 0:
            final_array = np.hstack((final_array,data[i]))
    return final_array 

【问题讨论】:

  • 好的,你知道你必须用一对括号写np.hstack((final_array,data[i]))而不是np.hstack(final_array,data[i])吗?所以,你传递给它一个元组。您是否考虑过如果您将一个包含两个以上项目的元组传递给它会发生什么?你能想到一个你在你的程序中已经有的元组,它会特别方便地传递吗?现在,如果你尝试这样做会发生什么?另外,您是否尝试阅读文档?

标签: python arrays numpy


【解决方案1】:

就是这么简单:

def concat_arrays(data: tuple) -> np.ndarray:
    return np.hstack(data)

没有必要一次遍历和堆叠一个 - 这就是为什么要求您传递一个元组而不是两个单独的参数的原因。 (无论如何,这在 Python 中并不是真正的限制 - 因为 *args 存在 - 但仍然存在。)

当然,这样写是没有意义的,因为我们可以直接使用np.hstack

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2017-01-18
    相关资源
    最近更新 更多