Numpy 创建数组

来源:互联网 发布:线上展厅制作软件 编辑:程序博客网 时间:2024/05/21 07:53

Numpy简介

    Numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包。其部分功能如下:

    ①ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。
    ②用于对整组数据进行快速运算的标准数学函数(无需编写循环)。
    ③用于读写磁盘数据的工具以及用于操作内存映射文件的工具。
    ④线性代数、随机数生成以及傅里叶变换功能。

    ⑤用于集成由C、C++、Fortran等语言编写的代码的工具。

    创建数组

    创建数组最简单的办法是使用array函数。它接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的NumPy数组。以一个列表的转换为例:

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. data1=[6,7.5,8,0,1]    #创建列表  
  2. arr1=np.array(data1)    #转换为数组  
  3. arr1.dtype    #数据类型保存在dtype对象中  
  4. data2=[[1,2,3,4],[5,6,7,8]]    #创建嵌套序列(由等长列表组成的列表)  
  5. arr2=np.array(data2)    #转换为多维数组  
  6. np.zeros(10)    #创建指定长度(10)的全0数组  
  7. np.ones((3,6))    #创建指定长度的(3行6列二维)的全1数组  
  8. range(10)    #创建指定数量的顺序列表(内置函数,默认0开始)  
  9. arange(10)    #创建指定数量的顺序数组  
  10. eye(10)    #创建一个正方的N×N单位矩阵  
  11. arr1=np.array([1,2,3],dtype=np.float64)    #解释为特定数据类型  
    数组和标量之间的运算

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. arr=np.array([[1.,2.,3.],[4.,5.,6.]])    #创建二维数组  
  2. arr*arr    #行列号相同的数组元素间运算  
  3. arr-arr  
  4. 1/arr  
  5. arr*0.5  
    基本的索引与切片

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. arr=np.arange(10)  
  2. arr[5]    #索引第6个元素  
  3. arr[5:8]    #索引第6到第9个元素作为数组  
  4. arr[5:8]=12    #令第6到第9个元素等于12  
  5. arr_slice=arr[5:8]    #数组切片是原始数据的视图,视图上的任何修改都会反映到原数组  
  6. arr_slice[:]=64    #将数组切片的全部元素改为64  
  7. arr[5:8].copy()    #得到数组切片的一份副本  
  8. arr2d=np.array([[1,2,3],[4,5,6],[7,8,9]])  
  9. arr2d[2]    #索引二维数组第3行  
  10. arr2d[0][2]  arr2d[0,2]    #等价索引1行3列元素  
  11. arr2d[:2]    #索引第1行和第2行(不含第3行)  
  12. arr2d[:,:1]    #索引第1列  
  13. arr2d[:-2]    #使用负数索引将从尾部开始选取行  
    数组转置和轴对换
    转置(transpose)是重塑的一种特殊形式,它返回的是源数据的视图(不会进行复制操作)。

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. arr=np.arange(15).reshape((3,5))    #生成顺序数组,后整形为3行5列  
  2. arr.T    #转置  
  3. arr=np.random.randn(6,3)    #randn函数生成一些正态分布的随机数组(6行3列)  
  4. np.dot(arr.T,arr)    #利用np.dot计算矩阵内积XTX  
    通用函数:快速的元素级数组函数

    通用函数(即ufunc)是一种对ndarray中的数据执行元素级运算的函数。

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. arr=np.arange(10)  
  2. np.sqrt(arr)    #计算各元素的平方根(arr**0.5)  
  3. exp  #计算各元素指数ex;  abs  #绝对值;  
  4. np.add(x,y)  #x、y数组中对应元素相加;  subtract #相减;  multiply #相乘;  divide #相除;  
    利用数组进行数据处理

    用数组表达式代替循环的做法,通常称为矢量化
    将条件逻辑表述为数组运算

    Numpy.where函数是三元表达式x if condition else y的矢量化版本

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. xarr=np.array([1.1,1.2,1.3,1.4,1.5])    #两个数值数组  
  2. yarr=np.array([2.1,2.2,2.3,2.4,2.5])  
  3. cond=np.array([True,False,True,True,False])    #一个布尔数组  
  4. result=np.where(cond,xarr,yarr)    #三元表达式  
    数学和统计方法
    可以通过数组上的一组数学函数对整个数组或某个轴向的数据进行统计计算。Sum、mean以及标准差std等聚合计算(aggregation,通常叫做约简(reduction))既可以当做数组的实例方法调用,也可以当做顶级NumPy函数使用:

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. arr=np.random.randn(5,4)  
  2. arr.mean();  np.mean(arr);  arr.sum();  
  3. arr.mean(axis=1)    #计算该轴上的统计值(0为列,1为行)  
    用于布尔型数组的方法
    布尔值会被强制转换为1(True)和0(False)。因此,sum经常被用来对布尔型数组中的True值计数:
[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. arr=randn(100)  
  2. (arr>0).sum()    #正值的数量  
  3. bools.any()    #用于测试数组中是否存在一个或多个True  
  4. bools.all()    #用于测试数组中所有值是否都是True  
    排序
    跟Python内置的列表类型一样,NumPy数组也可以通过sort方法就地排序(修改数组本身)。

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. arr=randn(8)  
  2. arr.sort()  
  3. arr=randn(5,3)  
  4. arr.sort(0)  #二维数组按列排序;  arr.sort(1)  #二维数组按行排序;  
    唯一化
[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ints=np.array([3,3,3,2,2,1,1,4,4])  
  2. np.unique(names)    #找出数组中的唯一值并返回已排序的结果  
    用于数组的文件输入输出
    Numpy能够读写磁盘上的文本数据或二进制数据。

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. arr=np.arange(10)  
  2. np.save(‘some_array’,arr)  #数组以未压缩的原始二进制格式保存在.npy文件中  
  3. np.load(‘some_array’)  #通过np.load读取磁盘上的数组  
  4. np.savez(‘array_archive.npz’,a=arr,b=arr)  #将多个数组以保存在一个压缩文件中  
  5. a=np.arange(0,12,0.5).reshape(4,-1)  
  6. np.savetxt(‘E:\\knakan\\a.txt’,a)  #缺省按照’%.18e’格式保存数据,以空格分隔  
  7. np.loadtxt(‘E:\\kankan\\a.txt’)  
  8. np.savetxt(‘E:\\kankan\\a.txt’,a,fmt=”%d”,delimiter=”,”)  #改为保存为整数,以逗号分隔  
  9. np.loadtxt(‘E:\\kankan\\a.txt’,delimiter=”,”)  #读入时也需指定逗号分隔  
    线性代数

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. x=np.array([[1.,2.,3.],[4.,5.,6.]])  
  2. y=np.array([[6.,23.],[-1,7],[8,9]])  
  3. x.dot(y)  #矩阵乘法,相当于np.dot(x,y)  



    0 0
    原创粉丝点击
    热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 穿高跟鞋脚肿了怎么办 衣服弄到单车油怎么办 高低床孩子摔下来怎么办 量血压时老紧张怎么办 牛仔外套的扣子掉了怎么办 裤子的裤筒大了怎么办 衣服拉链驰坏了怎么办 小脚裤裤腿紧了怎么办 地垫粘地板了怎么办 棉麻衬衣皱了怎么办 麻料衣服烫皱了怎么办 在京东买一双奥康鞋没有防伪怎么办 足球鞋丁掉了一颗怎么办 鼻子有点大想变小该怎么办 阿勒泰小东沟风景区边防证怎么办 孩子上一年级了学习很差怎么办 孩子作息时间不规律怎么办 冬天冻脸怎么办小妙招 冬天冻脚怎么办小妙招 冬天脚冷怎么办小妙招 初中生不爱学习父母该怎么办 早孕办公室买新办公桌怎么办 一年级学生专注度差怎么办 pscs6界面字体太小怎么办 psd文件打不开程序错误怎么办 经常熬夜皮肤暗黄怎么办 炎症引起的经期不来怎么办 父母沉迷于炒股该怎么办 宝宝嘴周边红了怎么办 后背被嘴吸出牙印怎么办 宝宝嘴巴周围长湿疹怎么办 宝宝脸蛋都是红红的湿疹怎么办 药流药第一天晚上的忘吃怎么办 我有口臭不想出门怎么办 入职10天想辞职怎么办 提完辞职报告不想上班了怎么办 吃流产药出血少怎么办 新车漆被刮掉了怎么办 新车被别人撞了怎么办 新买的车被撞了怎么办 临时牌掉了一张怎么办