gpt4 book ai didi

python - 如何将 1D numpy 数组分配给 2D numpy 数组?

转载 作者:太空狗 更新时间:2023-10-29 21:53:13 26 4
gpt4 key购买 nike

考虑以下简单示例:

X = numpy.zeros([10, 4])  # 2D array
x = numpy.arange(0,10) # 1D array

X[:,0] = x # WORKS

X[:,0:1] = x # returns ERROR:
# ValueError: could not broadcast input array from shape (10) into shape (10,1)

X[:,0:1] = (x.reshape(-1, 1)) # WORKS

有人可以解释为什么 numpy 的向量形状为 (N,) 而不是 (N,1) 吗?从一维数组转换为二维数组的最佳方法是什么?

为什么我需要这个?因为我有一个代码将结果 x 插入二维数组 X 并且 x 的大小不时变化所以我有 X[:, idx1: idx2] = x 如果 x 也是二维的,但如果 x 是一维的,则无效。

最佳答案

您真的需要能够使用相同的函数处理一维和二维输入吗?如果您知道输入将是一维的,请使用

X[:, i] = x

如果您知道输入将是二维的,请使用

X[:, start:end] = x

如果您不知道输入维度,我建议使用 if 在一行或另一行之间切换,尽管可能有一些我不知道的索引技巧可以同时处理这两者相同。

您的 x 具有形状 (N,) 而不是形状 (N, 1) (或 (1, N) ) 因为 numpy 不是为矩阵数学而构建的。 ndarrays 是 n 维的;它们支持对任何非负维数(包括 0)的高效、一致的矢量化操作。虽然这有时可能会使矩阵运算变得不那么简洁(尤其是在用于矩阵乘法的 dot 的情况下),但当您的数据自然是 1 维或 3 维、4 维时,它会生成更普遍适用的代码- 或 n 维。

关于python - 如何将 1D numpy 数组分配给 2D numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18438730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com