您的位置:首页 > 编程语言 > Python开发

python数据分析学习笔记--numpy

2017-12-27 15:26 741 查看
import numpy as np

创建ndarray

data1=[6,7.5,8,0,1]

arr1=np.array(data1)

or

arr2=np.array([1,2,3,4],[5,6,7,8])

一般np.array为数组推断出一个较为合适的数据类型

除np.array外,还有一些其他函数可以新建数据,如:

函数 说明

array 将输入数据(列表和数组等其它序列转换为ndarray)

asarray 将输入转换为ndarray,若输入本身为ndarray不进行复制

arange 类似range,返回一个ndarray

ones,ones_like 根据指定的形状和dtype创建全1数组。

zeros,zeros_like 类似ones,产生全0数组

empty,empty_like 创建新数组,只分配内存空间,不放值

eye,identity 建立一个正方的NXN单位矩阵

ndarray数据类型

可以在建立数组的时候设置

arr1=np.array([1,2,3],dtype=np.float64)

通过astype转换数组dtype:

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

float_arr=arr.astype(np.float64)

数组和标量的运算

数组与数组的运算,为数组中对应元素的运算,最后返回数组。

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

arr-arr

array([[0,0,0],[0,0,0]])

数组和标量的运算,将标量值传播到每个元素。

索引和切片

arr=np.arange(10)

[0,1,2,3,4,5,6,7,8,9]

arr[0]

0

arr[5]

5

arr[5:8]

[5,6,7] %对值的位置索引。包括左边位置,不包含右边位置。

arr_slice=arr[5:8] %将arr中5,6,7位置上的值包括位置赋给arr_slice

arr_slicep[1]=12345. %将12345赋给arr_slice中位置1。

arr %arr数组中位置6的值为12345

注:如果想得到ndarray切片的副本而非数据视图,需arr[5:8].copy()

二维数组切片(此处1行或2行等,都指位置)

arr[:2,1:] %shape为(2,2),意思为选取0与1行,1与2列。

arr[2] %选取2行,和所有列

arr[2,:]

arr[2:,:]

arr[1,:2]

arr[1:2,:2] %选取1行和0与1列

数组转置和轴兑换

arr=np.arange(15).reshape((3,5))

arr.T

进行矩阵计算时,可能经常用到该操作,如用np.dot计算矩阵内积

arr=np.random.randn(6,3)

np.dot(arr.T,arr)

对于高维度数组,需要一个轴编号数组才能对轴 进行转置

arr=np.arange(16).reshape((2,2,4))

arr.transpose((1,0,2))

通用函数:快速的元素级数组函数

arr=np.arange(10)

np.sqrt(arr)

np.exp(arr)

np.maximum(x,y)

等等

唯一化及其他的集合逻辑

np.unique用于找出数组中唯一值并返回已排序值

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

np.unique(ints)

array([1,2,3,4])

intersect1d(x,y)计算x和y中公共元素,并返回有序结果

union1d(x,y)计算x和y并集,并返回有序结果。

线性代数

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

y=np.array([[6.,23.],[-1.,7],[8,9]])

x.dot(y) %等于np.dot(x,y)

array([[28.,64.],[67.,181.]])

常用的numpy线性代数函数

diag以1维数组返回方阵对角线元素。

dot 矩阵乘法

trace 计算对角线元素和

det计算矩阵行列式

inv计算仿真逆

qr qr分解

solve解线性方程组Ax=b

lstsq计算Ax=b的最小二乘解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python numpy 数据分析