这似乎是某种水平连接,但我在网上找不到任何文档。这是一个最小的工作示例:
In [1]: from numpy import c_
In [2]: a = ones(4)
In [3]: b = zeros((4,10))
In [4]: c_[a,b]
Out[4]:
array([[ 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
最佳答案
我花了很长时间才明白,但似乎我终于明白了。
您所要做的就是沿第二个轴添加。
让我们开始吧:
np.c_[np.array([1,2,3]), np.array([4,5,6])]
但是没有第二个轴。所以我们在心里加一个。
所以两个数组的形状都变成了(3,1)
。
因此结果形状将是 (3,1+1),即 (3,2)。 这是结果的形状 -
array([[1, 4],
[2, 5],
[3, 6]])
另一个例子:
np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])]
形状:
np.array([[1,2,3]])
= 1,3
np.array([[4,5,6]])
= 1,3
0
所以我们可以认为它是 [[0]]
= 1,1
所以结果 1,3+1+1+3
= 1,8
这是结果的形状:array([[1, 2, 3, 0, 0, 4, 5, 6]])
关于python - c 下划线表达式 `c_` 究竟做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10894323/