我有一个似乎很简单的问题。
观察代码:
In : x=np.array([0, 6])
Out: array([0, 6])
In : x.shape
Out: (2L,)
这表明该数组没有第二维,因此x
与没什么不同x.T
。
如何使x的尺寸为(2L,1L)?这个问题的真正动机是我有一个y
shape数组[3L,4L]
,并且我希望y.sum(1)是可以转置的向量,依此类推。
虽然您可以调整数组的形状并使用来添加维[:,np.newaxis]
,但是您应该熟悉最基本的嵌套方括号或列表符号。注意它如何与显示匹配。
In [230]: np.array([[0],[6]])
Out[230]:
array([[0],
[6]])
In [231]: _.shape
Out[231]: (2, 1)
np.array
ndmin
尽管它在开头添加了额外的尺寸(的默认位置numpy
),但也带有一个参数。
In [232]: np.array([0,6],ndmin=2)
Out[232]: array([[0, 6]])
In [233]: _.shape
Out[233]: (1, 2)
制作2D物体的经典方法-重塑:
In [234]: y=np.arange(12).reshape(3,4)
In [235]: y
Out[235]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
sum
(和相关功能)具有一个keepdims
参数。阅读文档。
In [236]: y.sum(axis=1,keepdims=True)
Out[236]:
array([[ 6],
[22],
[38]])
In [237]: _.shape
Out[237]: (3, 1)
empty 2nd dimension
并不完全是术语。更像是不存在的第二维。
一个维度可以有0个条件:
In [238]: np.ones((2,0))
Out[238]: array([], shape=(2, 0), dtype=float64)
如果您更熟悉MATLAB(最小二维数),那么您可能会喜欢np.matrix
子类。它采取步骤来确保大多数操作返回另一个二维矩阵:
In [247]: ym=np.matrix(y)
In [248]: ym.sum(axis=1)
Out[248]:
matrix([[ 6],
[22],
[38]])
矩阵sum
可以:
np.ndarray.sum(self, axis, dtype, out, keepdims=True)._collapse(axis)
该_collapse
位使它返回的标量ym.sum()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句