【发布时间】:2018-02-08 19:47:06
【问题描述】:
假设我在 Ipython 中执行以下操作:
import numpy as np
test = np.zeros([3,2])
test
test.shape
test[:,0]
test[:,0].shape
结果将是:
array([[ 0., 0.],
[ 0., 0.],
[ 0., 0.]])
(3,2)
array([ 0., 0., 0.])
(3,)
为什么这里的最后一个结果不是(3,1)?我有一个解决方法:reshape 命令,但这似乎很愚蠢。
【问题讨论】:
-
使用切片来保持维度。
test[:,:1]. -
返回 (3,1) 的形状。但如果我想要一个不同的列,并尝试
test[:,:0],我会得到 (3,0) 的形状。 -
你想要哪一栏?要获取第 i 列,
test[:,i:i+1]。 -
NumPy 不是矩阵库。它是一个 n 维数组库。
test[:, 0]是一维数组。 -
在 MATLAB 中像这样对 (n)d 矩阵进行索引会将维度减少到 (n-1)d,因为 n>2。
numpy做同样的事情,只是它没有人为的 2 最小维度。
标签: python python-3.x numpy slice reshape