数据分析介绍之七——单变量数据观察之汇总统计和箱线图

来源:互联网 发布:windows账户有什么用 编辑:程序博客网 时间:2024/05/18 17:28

模块提供了高效、便捷的numpy Python大数值数组的处理。它的前身是无论是早前的数字和替代Numarray模块。(见附录A中更多的科学计算与Python。史)的NumPy模块使用的许多其他的库和项目,在这个意义上是一个“基地”技术。
让我们在钻研深入技术细节的一些例子看。

一、NumPy in Action

对象的类型是ndarray NumPy。创造它们有不同的方式。我们可以创建一个ndarray的:

  1. 转换Python列表
  2. 使用函数返回一个密集的载体
  3. 从文件直接进入NumPy对象读取数据

清单显示五种不同的方法来创建NumPy对象。首先我们创建一个通过将Python列表。然后,我们展示了两个不同工厂的例程生成等距网格点。这些例程在解释所提供的边界值时各不相同:一个例程包含两个边界值,另一个包含一个边界值,而不包含另一个边界值。接下来我们创建一个填充零矢量和循环中的每个元素的集合。最后,我们从文本文件中读取数据。(这里我只展示了最简单或默认的情况,所有这些例程都有更多的选项可以用来影响他们的行为。)

# Five different ways to create a vector...import numpy as np# From a Python listvec1 = np.array( [ 0., 1., 2., 3., 4. ] )# arange( start inclusive, stop exclusive, step size )vec2 = np.arange( 0, 5, 1, dtype=float )# linspace( start inclusive, stop inclusive, number of elements )vec3 = np.linspace( 0, 4, 5 )# zeros( n ) returns a vector filled with n zerosvec4 = np.zeros( 5 )for i in range( 5 ):    vec4[i] = i# read from a text file, one number per rowvec5 = np.loadtxt( "data" )

最后,所有的五个向量包含相同的数据。你应该注意,用来初始化vec1 Python列表的值是浮点值,我们指定的向量元素显式使用时arange()函数创建vec2类型。(我们一会儿就回来。)

现在我们已经创建了这些对象,我们可以与他们(见下列表)。一个由NumPy提供的主要设备是我们可以像他们的原子数据类型使用numpy对象:我们可以添加、删减和增加他们(等等)而不需要显式的循环。避免显式的循环使得我们的代码更清晰。它也使它更快(因为整个操作是在C中执行的,没有开销)请参见下面的讨论)。

# ... continuation from previous listing# Add a vector to anotherv1 = vec1 + vec2# Unnecessary: adding two vectors using an explicit loopv2 = np.zeros( 5 )for i in range( 5 ):    v2[i] = vec1[i] + vec2[i]# Adding a vector to another in placevec1 += vec2# Broadcasting: combining scalars and vectorsv3 = 2*vec3v4 = vec4 + 3# Ufuncs: applying a function to a vector, element by elementv5 = np.sin(vec5)# Converting to Python list object againlst = v5.tolist()

所有操作都是按元素执行的:如果我们添加两个向量,那么每个向量的对应元素将被组合起来,以得到结果向量中的元素。换句话说,紧凑的表达vec1 + vec2为V1在上市相当于用来计算V2显式线圈结构。这是乘法是真实的:vec1 * vec2将导致载体的两个操作数的对应元素已增加元素的元素。(如果你想要一个真正的载体或“点”的产品,你必须使用dot()函数代替。)显然,这需要所有操作数具有相同数量的元素!

>>> import numpy as np>>> # Create a 12-element vector and reshape into 3x4 matrix>>> d = np.linspace( 0, 11, 12 )>>> d.shape = ( 3,4 )>>> print d[[ 0. 1. 2. 3.][ 4. 5. 6. 7.][ 8. 9. 10. 11.]]>>> # Slicing...>>> # First row>>> print d[0,:][ 0. 1. 2. 3.]>>> # Second col>>> print d[:,1][ 1. 5. 9.]>>> # Individual element: scalar>>> print d[0,1]1.0>>> # Subvector of shape 1>>> print d[0:1,1][ 1.]>>> # Subarray of shape 1x1>>> print d[0:1,1:2][[ 1.]]
阅读全文
0 0
原创粉丝点击