引子
""" Numpy提供数组和矢量运算 ndarray:可以存储单一数据类型的多维数组 ufunc:对数组进行处理的函数 用于读写磁盘数据的工具以及用于操作内存映射文件的工具 线性代数,随机数生成傅里叶变换的工具 """ import numpy as np data=np.array([[0.9526,-0.246,-0.8856],[0.5639,0.2379,0.9104]]) print(data*10) #ndarray是一个通用的数据多维容器,即所有的数据元素必须是相同的元素 #使用shape函数可以查看数组各维度的大小 print(data.shape) #应用dtype查看数据类型 print(data.dtype)
创建ndarray数组
# -*- coding: utf-8 -*- """ Created on Sat Jul 27 11:05:25 2019 @author: gao """ #创建ndarray #使用narray函数 import numpy as np data1=[6,7,8,0,1]#创建列表 arr1=np.array(data1) print(arr1) #使用嵌套序列创建多维数组 data2=[[1,2,3,4],[5,6,7,8]] arr2=np.array(data2) print(arr2) #array函数会在创建数组时推断出一个比较合适的数据类型。并保存在dtype对象中,也可以显示指定 print("arr1:{0} arr2:{1}".format(arr1.dtype,arr2.dtype)) #使用函数创建数组 zeros()和ones() print(np.zeros(10)) print(np.zeros((3,6))) print(np.empty((2,2)))
numpy数据类型~~~dtype
import numpy as np arr1=np.array([1,2,3,4],dtype=np.float64) print(arr1)
import numpy as np arr1=np.array([1,2,3,4],dtype=np.float64) print(arr1) print(arr1.dtype) #使用astype函数显式更改dtype a=arr1.astype(np.int32) print(a) print(a.dtype) print(arr1) #其中arr1类型并没有改变,只是更改了a的
数组的切片是原始数据的视图,不会复制数据,在视图上更改任何数据就会影响源数据
数组和标量之间的运算
import numpy as np arr=np.array([[1,2,3],[4,5,6]]) print(arr) print(arr*arr) print(arr**0.5) print(1/arr)
索引和切片
import numpy as np arr=np.arange(10) print(arr) #索引,数组元素的索引从0开始 print(arr[5]) #切片 print(arr[5:8]) arr[5:8]=12 print(arr) #更改视图源数据也会改变 #二维数组中索引位置上的元素不再是标量而是一维数组 #同理三维数组中索引位置上是二维数组 arr1=np.array([[1,2,3],[4,5,6],[7,8,9]]) print(arr1) print(arr1[0]) print(arr1[0][0]) #上语句的等价语句 print(arr1[0,0]) #切片索引 #通过切片访问元素,通常返回一个数组 #布尔型索引 #花式索引
通用函数ufunc
通用函数是一种对ndarray中的数据执行元素级运算的函数。
利用数组进行数据处理
使用函数meshgrid()接受两个一维数组,并产生两个二维矩阵
import numpy as np import matplotlib.pyplot as pl x=np.arange(0,1,0.1) y=np.arange(0,1,0.1) xs,ys=np.meshgrid(x,y) z=xs**2+ys**2 print(z) pl.imshow(z,cmap=pl.cm.gray)
将条件逻辑表述为数组
numpy.where函数是一个三元表达式 x if condition else y 的矢量化版本。
import numpy as np x=np.array([1.1,1.2,1.3,1.4,1.5]) y=np.array([2.1,2.2,2.3,2.4,2.5]) cond=np.array([True,False,True,True,False]) print(np.where(cond,x,y))
数学和统计方法
用于数据的文件输入和输出
以二进制格式保存到磁盘
np.save
np.load
np.savez
存取文本文件
np.loadtxt('',delimiter=',')
线性代数
随机数的生成
可以使用python内置模块random中normal产生一个标准正态分布的数组