在Python中使用newaxis

时间:2016-08-26 02:22:59

标签: python arrays numpy matrix

A = np.array([[ 1, 2, 3], 
             [ 4, 5, 6], 
             [ 7, 8, 9],
             [10,11,12]])
B = A[:, np.newaxis]
print(B)
print(B.shape)

输出

[[[ 1  2  3]]

 [[ 4  5  6]]

 [[ 7  8  9]]

 [[10 11 12]]]

(4L, 1L, 3L)

我有两个问题:

  1. 为什么括号外有额外的括号,例如[[ 1 2 3]],为什么它不是[ 1 2 3]
  2. 1L是什么意思?我认为B是一个4X3矩阵,为什么它不是(4L, 3L)

2 个答案:

答案 0 :(得分:4)

参考numpy参考文件(http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html), 选择元组中的每个newaxis对象用于将结果选择的维度扩展一个单位长度维度。添加的维度是newaxis对象在选择元组中的位置。

  1. 此处,每个括号代表一个维度,额外括号由newaxis引起。
  2. 1L表示维度增加了newaxis。

答案 1 :(得分:2)

“额外”括号和1L是出于同样的原因:你使用np.newaxis将范围1的新维度插入到数组形状中 - 换句话说,你转换了一个二维4x3数组成为一个三维4x1x3阵列。

B的4个“行”中的每一个都包含一个二维1x3数组,例如

[[4,5,6]]

A的每一对应行只是一个长度为3的一维数组:

[4,5,6]

因此额外的括号。