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

模块提供了高效、便捷的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 list
vec1 = 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 zeros
vec4 = np.zeros( 5 )
for i in range( 5 ):
    vec4[i] = i
# read from a text file, one number per row
vec5 = np.loadtxt( "data" )

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

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

# ... continuation from previous listing
# Add a vector to another
v1 = vec1 + vec2
# Unnecessary: adding two vectors using an explicit loop
v2 = np.zeros( 5 )
for i in range( 5 ):
    v2[i] = vec1[i] + vec2[i]
# Adding a vector to another in place
vec1 += vec2
# Broadcasting: combining scalars and vectors
v3 = 2*vec3
v4 = vec4 + 3
# Ufuncs: applying a function to a vector, element by element
v5 = np.sin(vec5)
# Converting to Python list object again
lst = 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值