Python数据分析

Python数据分析[2] - Numpy包

2021-02-20  本文已影响0人  屹然1ran

ndarry: 多维度的向量

Numpy为Numerical Python的缩写,是数据分析最重要的包之一,很多数据分析相关的包会依赖Numpy中的向量类型。

向量类的数据配合向量化计算,会极大的加速计算的效率,这一点和R中的dply组函数有异曲同工之处。

import numpy as np
# 生成随机数
data = np.random.randn(2, 3)
data

Out[113]: 
array([[-0.8641422 ,  0.99312833, -0.80589659],
       [ 0.67432817,  1.05005674,  0.68455539]])

如果对一个向量进行数学运算

data*10
Out[114]: 
array([[-8.64142202,  9.9312833 , -8.05896586],
       [ 6.74328173, 10.50056741,  6.84555386]])

data + data
Out[115]: 
array([[-1.7282844 ,  1.98625666, -1.61179317],
       [ 1.34865635,  2.10011348,  1.36911077]])

使用shape方法和dtype方法可以查看一个array的形状与数据类型

data.shape
Out[116]: (2, 3)

data.dtype
Out[117]: dtype('float64')

创建ndarrays

使用np.array可以很简单的创建一个numpy向量

np.array([1,2,3])
Out[118]: array([1, 2, 3])

np.array([[1,2,3], [1,2,3]])
Out[120]: 
array([[1, 2, 3],
       [1, 2, 3]])

zeros, ones... 方法,可以创建值均为0,1... 的向量

np.zeros((3,4))
Out[121]: 
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])
np.ones((3,4))
Out[123]: 
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])

arrange方法可以对array进行排序

ndarrays数据类型

ndarrays支持的数据类型如下


ndarrays数据类型

astype方法可以简单的对数据类型进行转换

arr = np.array([1,2,3,4,5])

arr.dtype
Out[126]: dtype('int32')

arr2 = arr.astype(np.float64)

arr2.dtype
Out[129]: dtype('float64')

ndarrays的索引(indexing)与分页(slicing)

一维的ndarrays的分页与python的list类似

arr = np.arange(10)

arr[5]
Out[132]: 5

arr[5:8]
Out[133]: array([5, 6, 7])

arr[5:8] = 0

arr
Out[135]: array([0, 1, 2, 3, 4, 0, 0, 0, 8, 9])

重点: ndarrays的数据是从原始数据中读取出来的,例如如下

arr = np.arange(10)

arr
Out[145]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr_slice = arr[5:8]

arr_slice 
Out[147]: array([5, 6, 7])

arr_slice[0] = 100

arr
Out[149]: array([  0,   1,   2,   3,   4, 100,   6,   7,   8,   9])

通过修改arr_slice中的数据,我们间接的修改了arr的数据。

以下为一些二维array的slicing例子


二维array slicing

向量化函数

sqrt, exp等方法,都是向量化函数

arr = np.arange(10)
arr
Out[151]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

np.sqrt(arr)
Out[154]: 
array([0.        , 1.        , 1.41421356, 1.73205081, 2.        ,
       2.23606798, 2.44948974, 2.64575131, 2.82842712, 3.        ])

np.exp(arr)
Out[155]: 
array([1.00000000e+00, 2.71828183e+00, 7.38905610e+00, 2.00855369e+01,
       5.45981500e+01, 1.48413159e+02, 4.03428793e+02, 1.09663316e+03,
       2.98095799e+03, 8.10308393e+03])

maximum可以选择多个向量中的最大值

arr = np.arange(10)
arr2 = arr[::-1]

arr
Out[158]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr2
Out[159]: array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])

np.maximum(arr, arr2)
Out[160]: array([9, 8, 7, 6, 5, 5, 6, 7, 8, 9])
Unary ufuncs
Binary universal functions
Binary universal functions
统计方法

Reference
Python for Data Analysis,2nd Edition

上一篇下一篇

猜你喜欢

热点阅读