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
网友评论