数据分析1numpy及其基本操作

1.introduction to Numpy

import numpy as np
a = np.random.random([3,3])
使用numpy包的情况:
import time
numpy_array=np.array([1,2,3][2,1,3])
start=time.time()
arr*arr
end=time.time()
print(end-start)

使用loop循环的情况:
import time
start=time.time()
for i in arr:
    print(i*i)
end=time.time()
print(end-start)                //明显使用numpy包耗时较少

2.Create Arrays

生成数组最简单的方式就是使用array函数。array函数接收任意的序列型对象,生成一个新的包含传递数据的NumPy数组。
t=[1,2,3]  /  t=(1,2,3)
a = np.array(t,dtype=‘int 32’)
b = np.array([list1,list2])   //创建数组

a.dtype   //每一个数组都有一个dtype属性,用来描述数组的数据类型。
          可以使用astype方法显示地转换数组的数据类型 arr.astype(' ')
          可以使用另一个数组的dtype属性,也可以使用类型代码传入数据类型。
a.shape   //每一个数组都有一个shape属性,用来表征数组每一维度的数量。
            

np.zeros([2,2])     //创建两行两列全为0的数组
np.ones([2,3])     //创建两行三列全为1的数组
np.empty([2,3])     //创建两行三列没有初始化数值的数组
np.eye([3])     //创建3行3列 只有对角线为1,其余为0的数组
np.arange([start,end,space])   //从start到end(不包括end),步长为space 
                                 python内建函数range的数组版,返回一个数组
np.linspace([statr,end,num])  //从start到end之间  分为3等分

3.Basic Operations of Arrays

Arithmetic Operators
a*a     //对应元素相乘
a*10    //所有元素乘以10
a**3    //每个元素3次方
a+a     //对应元素相加

Matrix Operations
A*B               //对应元素相乘
A>B               //同尺寸数组之间的比较,会产生一个布尔数组
A.dot(B)         
np.dot(A,B)       //矩阵相乘
np.add(A,B)       //对应元素相加
np.random.random是在半开放区间[0.0,1.0)之间生成随机数字

Other Operations
a.sum()
a.max() a.min()

mean                数学平均
argmin,argmax       最小值和最大值的位置
cumsum              从0开始元素累计和
cumprod             从1开始元素累积积
关于axis       axis=0按列操作(行轴向)    axis=1按行操作
例:a.sum(axis=0)        //sum of each column
a.cumsum(axis=1)     //累积相加 (1,1+2.1+2+3,1+2+3+4)

4.indexing,slicing and iterating

下标从0开始计数
a[index]     //选取下标为index的元素 在一个二维数组中,索引对应的元素不再是一个值,而是一个一维数组。
a[start:end]     //从start到end截取,不包括end
                 //如果你传入了一个数值给数组的切片,a[start:end]=var 数值被传递给了整个切片。
                 //区别与python的内建列表,数组的切片是原数组的视图

我们选取np_array部分的时候,创建了一个view (没有copy以前的值,而是直接改了array)
a_slice[0]=1
print(a_slice)
print(a)
如果不想对原来的array修改,可以把选取的部分copy出来
a.slice=a[0:5].copy()

数组的切片索引:a[1,:2]    //选择第二行,但只选择前两列
                          //单独一个冒号表示选择整个轴上的数组
                         
布尔索引:数组的比较操作也是可以量化的  data[name == 'Bob']会根据产生的布尔值数组对data数组进行筛选;
         可以使用!=或在条件表达式前使用~对条件取反
         对多个布尔值条件进行联合,需要使用数学操作符 如 & 和 丨
    对于布尔值数组,有两个非常有用的方法any和all。any检查数组中是否至少有一个True,而all检查是否每个值都是True

np.sort方法返回的是已经排序好的数组拷贝,而不是对原数组按位置排序。

Multidimensional arrays
def f(x,y):
    retrun x*y
np.fromfunction(f,(2,3),dtype=int)   //对2行3列的各个坐标的x,y 做关于f的函数,
返回值在各坐标上。

5.Matrix Operations

a.T     //把所有维度反过来
a.transpose()     //可以指定到底要怎么变化 比如[0,2,1]意思是第一个维度不变,后两
个维度变换
np.linalg.inv( )        //求逆矩阵
np.linalg.qr()          //计算QR分解
np.allclose(a,b)        //求a,b是否相同
np.linalg.eig( )        //求特征值
np.trace(a)            //算对角的和

np.arange(50).reshape([5,5,2])      //将0-49 50个数放在5*5*2的空间里
a.swapaxes(0,1)       //交换坐标轴
np.bincount()            //  统计 等于下标值 的数字有多少个
                     [2,1,1,3]  则 显示[0,2,1,1]即0没有,1有两个,2,3都有一个

6.Array processing

import matplotlib.pyplot as plt            //画图用的包
x,y=np.meshgrid(np.arange(-10,10,1),np.arange(-10,10,1))  //x,y轴都是从-10到10,间隔1.
      //np.meshgrid函数接收两个一维数组,并根据两个数组的所有(x,y)对生成一个二维数组。

a=np.array([1,2,3])
b=np.array([4,5,6])
condtion=np.array([True,False,False])
np.where(condtion,a,b)       //相应位置为true 选择a中元素,为false选择b中元素。
np.where(b<0,0,b)    //即意味着b中小于0的元素全部置为0,否则不变仍为b。

np.inld(a,b)        //a中的元素是否存在于b中
np.unique()         //去除集合中重复的元素
intersect1d(x,y)    //x和y的交集 并排序
union1d(x,y)        //x和y的并集 并排序
setdiff1d(x,y)      //差集,在x中但不在y中的元素
setxor1d(x,y)       //异或集,在x或y中,但不属于x,y交集的元素

7.Save and Load Array

np.save('array_a',a)      //存储a,命名为array_a
np.load('array_a.npy')          //读取array_a.npy文件

np.savez('two_array',x=a,y=a.T)  //存储两个数组
np.load('two_array.npy')['x']
np.load('two_array.npy')['y']

np.savetxt('array_txt.txt',a,delimiter=",")   //存储为txt格式,用逗号隔开
np.loadtxt('array_txt.txt',delimiter=",")

8.伪随机数生成

seed         //向随机数生成器传递随机状态种子
shuffle      //随机排列一个数列
rand         //从均匀分布中抽取样本
randn        //从均值0方差1的正太分布中抽取样本
normal       //从正太(高斯)分布中抽取样本
beta          //从beta分布中抽取样本
chisquare     //从卡方分布中抽取样本
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值