Han*_*art 7 python arrays numpy multidimensional-array
考虑以下简单示例:
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
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么numpy有形状(N,)而不是(N,1)的向量?从1D阵列到2D阵列的最佳铸造方法是什么?
我为什么需要这个?因为我有一个代码将结果插入x
到2D数组中X
,x的大小会不时变化,所以X[:, idx1:idx2] = x
如果x
是2D也可以使用,但如果x是1D则不行.
您真的需要能够使用相同的函数处理 1D 和 2D 输入吗?如果您知道输入将是一维,请使用
X[:, i] = x
Run Code Online (Sandbox Code Playgroud)
如果您知道输入将是二维的,请使用
X[:, start:end] = x
Run Code Online (Sandbox Code Playgroud)
如果您不知道输入尺寸,我建议使用 来在一行或另一行之间切换if
,尽管可能有一些我不知道的索引技巧可以以相同的方式处理这两行。
你x
有 shape(N,)
而不是 shape (N, 1)
( 或(1, N)
) 因为 numpy 不是为矩阵数学而构建的。ndarray 是 n 维的;它们支持任何非负维数(包括 0)的高效、一致的向量化运算。虽然这有时可能会使矩阵运算变得不太简洁(特别是在dot
矩阵乘法的情况下),但当数据自然是一维或 3、4 或 n 维时,它会生成更通用的代码。
归档时间: |
|
查看次数: |
11922 次 |
最近记录: |