2017-05-30 85 views
0
import numpy as np # specify import if you are using it with some other name 

np.array([1, 2, 3]) -> array([1, 2, 3]) 

np.array([1, 2, 3])[None] -> array([[1, 2, 3]]) 

注意第二行有一个额外的维度。有人可以向我解释这种行为吗?这不是乘法。 np.array([1, 2, 3])*[None]将引发错误。numpy`np.array()[None]`behavior

回答

2

这与np.array([1, 2, 3])[np.newaxis]完全一样。 None只是碰巧为newaxis选择的值;它可能是任何不是有意义的分片或索引值的东西。

+0

我通常会使用'np.array([1,2,3])[None,:]',说明我在开始时添加了一个新维度。 'numpy'自动添加尾随的':'。但通常在广播中不需要“无”,它会自动添加。 – hpaulj

0
>>> numpy.array([1,2,3])[0] # find values at specific index in array 
1 
>>> numpy.array([1,2,3])[1] 
2 
>>> numpy.array([1,2,3])[None] # when you pass None as index it gives you whole list 
array([[1, 2, 3]]) 

要你的困惑,当你正在使用numpy.array(<your-list>)*[value]这将成倍增加与值数组中的所有值。这里列表中的所有值都是整数,只能与整数或浮点值相乘。 None是Python中的NoneType object(准确地说,这是我对python3的声明,对python2没有多少意识),并且不能将整数值与None对象相乘。因为如果你处理2 * None它没有任何意义。