python - 数组python的形状

标签 python numpy

假设我创建一个二维数组

 m = np.random.normal(0, 1, size=(1000, 2))
 q = np.zeros(shape=(1000,1))
 print m[:,0] -q

当我使用 m[:,0].shape 时,我得到 (1000,) 而不是 (1000,1)是我想要的。如何将 m[:,0] 强制转换为 (1000,1) 数组?

最佳答案

通过特别选择第 0 列,正如您所注意到的,您降低了维度:

>>> m = np.random.normal(0, 1, size=(5, 2))
>>> m[:,0].shape
(5,)

您有很多选择来恢复 5x1 对象。您可以使用列表而不是整数进行索引:

>>> m[:, [0]].shape
(5, 1)

您可以要求“所有列最多但不包括 1”:

>>> m[:,:1].shape
(5, 1)

或者您可以使用None(或np.newaxis),这是扩展维度的通用技巧:

>>> m[:,0,None].shape
(5, 1)
>>> m[:,0][:,None].shape
(5, 1)
>>> m[:,0, None, None].shape
(5, 1, 1)

最后,你可以 reshape :

>>> m[:,0].reshape(5,1).shape
(5, 1)

但对于这种情况,我会使用其他方法之一。

关于python - 数组python的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15668380/

相关文章:

python - 堆积条形图 - 从非数值项开始

python - 如何使用 nix-shell 启用可选的构建依赖项?

python - 我尝试求解非线性方程时出错

python - 值错误 : First argument must be a sequence ----> Scatter Plot Python

python - python scipy/numpy 中的多项式 pmf

python - 等同于 python 日期时间

python - SQLAlchemy:懒惰 ='raise' 提示字段,即使它们已加载

python - 列表中的负面和正面

python-3.x - 使用 numpy arange 创建一系列 float

python - 单个 Numpy 类型似乎不保留字节顺序