Numpy基础笔记

    Numpy简介

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

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

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

    创建数组

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

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

arr=np.array([[1.,2.,3.],[4.,5.,6.]])    #创建二维数组
arr*arr    #行列号相同的数组元素间运算
arr-arr
1/arr
arr*0.5
     基本的索引与切片

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

arr=np.arange(15).reshape((3,5))    #生成顺序数组,后整形为3行5列
arr.T    #转置
arr=np.random.randn(6,3)    #randn函数生成一些正态分布的随机数组(6行3列)
np.dot(arr.T,arr)    #利用np.dot计算矩阵内积XTX
    通用函数:快速的元素级数组函数

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

arr=np.arange(10)
np.sqrt(arr)    #计算各元素的平方根(arr**0.5)
exp  #计算各元素指数ex;  abs  #绝对值;
np.add(x,y)  #x、y数组中对应元素相加;  subtract #相减;  multiply #相乘;  divide #相除;
     利用数组进行数据处理

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

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

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

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

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

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

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)

【参考文献】

[1]. 利用Python进行数据分析,wes McKinney著,唐学韬译,2014年,机械工业出版社









  • 11
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: numpy是一个高性能的科学计算库,用于处理大型数据集和矩阵运算。它是Python科学计算生态系统中最重要的库之一,提供了丰富的功能和工具。 在numpy的学习过程中,我创建了一个名为"numpy笔记.xmind"的思维导图来总结和记录重要的概念和函数。 首先,我在思维导图中列出了numpy的基本数据结构,包括多维数组(ndarray)、切片和索引。我理解了如何创建和操作这些数据结构,以及如何使用切片和索引访问数组中的元素。 其次,在思维导图中,我详细记录了numpy中的常用函数和方法。这些函数包括数学运算(如加法、乘法和指数运算)、统计函数(如平均值、标准差和方差)和数组操作(如形状变换、拼接和切割)。对于每个函数,我还注明了其参数和用法,以便以后参考。 此外,我还在思维导图中添加了numpy的广播功能和ufunc函数。广播允许我们在不同形状的数组之间进行元素级别的操作,而ufunc函数则可以对数组进行逐元素的函数调用。对于这两个功能,我记录了它们的应用场景和使用方法。 最后,我在思维导图中补充了一些numpy的高级特性和应用,如随机数生成、文件IO以及与其他科学计算库(如pandas和matplotlib)的集成。这些特性和应用使numpy成为了进行数据分析和科学计算的重要工具。 通过创建和总结"numpy笔记.xmind"这个思维导图,我能够更好地理解和掌握numpy的知识。这份笔记将成为我学习和使用numpy的重要参考资料,帮助我在科学计算和数据分析的过程中提高效率和准确性。 ### 回答2: numpy(Numerical Python)是Python中用于进行科学计算的一个库。它提供了丰富的高性能数值计算工具,特别是对于大规模多维数组的操作。下面是关于numpy的一些笔记。 1. 数组的创建:numpy使用ndarray对象来存储多维数组。可以使用numpy.array()函数创建数组,也可以使用numpy.zeros()、numpy.ones()等函数创建特定初始值的数组。 2. 数组的属性:可以使用ndarray的属性来获取数组的形状、大小、数据类型等信息。例如,shape属性可以得到数组的维度大小,dtype属性可以得到数组的数据类型。 3. 数组的索引和切片:可以通过索引来访问数组中的元素。numpy中的索引从0开始,可以使用负数表示相对于数组尾部的位置。切片可以用来获取数组的部分元素。可以使用冒号分隔切片的起始、结束和步长值。 4. 数组的运算:numpy支持对数组的逐元素运算,包括加减乘除、求幂、取余等。可以使用numpy的函数进行常见的数学运算,也可以使用ndarray对象的方法进行相应的操作。 5. 广播:numpy中的广播机制可以自动处理形状不一致的数组之间的运算。广播可以使得形状不一致的数组能够按需扩展以便进行元素运算,而不需要进行明确的形状调整操作。 6. 数组的重塑和转置:可以使用reshape()函数对数组进行重新排列,改变其形状。transpose()函数可以用来进行数组的转置操作。 7. 数组的聚合操作:numpy提供了很多用于数组聚合操作的函数,例如对数组进行求和、求平均、求最大最小值等。 8. 数组的存储和读取:可以使用numpy提供的函数将数组保存到文件中,也可以使用numpy的load()函数从文件中加载数组。 以上是关于numpy的一些基础笔记numpy在科学计算、数据分析等领域具有广泛的应用。掌握numpy的基本操作和常用函数,能够更高效地进行数值计算和数据处理任务。 ### 回答3: numpy是一个开源的Python库,提供了高效的多维数组对象以及对数组操作的函数。笔记.xmind是一种思维导图的文件格式。结合两者,我可以将numpy的使用方法和相关概念通过思维导图的方式记录下来。 在笔记.xmind中,我可以使用中心主题表示numpy,然后通过子主题展开numpy的各个方面。例如,我可以创建一个子主题来介绍numpy的数组对象,包括数组的创建、形状、类型等信息。另外,我还可以创建子主题来记录numpy数组操作的函数,例如数组的索引与切片操作、数组的运算操作等。在每个子主题中,我可以使用节点来记录具体的代码示例,以及相关的说明和注意事项。 除了记录numpy的使用方法外,我还可以创建子主题来介绍numpy中的常用概念和特性。例如,我可以创建一个子主题来介绍numpy中的广播机制,以及在数组运算中的应用。另外,我还可以创建子主题来介绍numpy中的向量化操作和矩阵运算,以及其在科学计算中的重要性。 在整个思维导图中,我可以使用不同的颜色、字体和图标来区分不同的主题或节点,以便更好地组织和呈现信息。可以使用箭头来表示不同主题之间的关系,例如通过箭头表示某个主题是另一个主题的子主题或相关主题。 通过将numpy的使用方法和相关概念以思维导图的形式记录在笔记.xmind中,我可以更清晰地了解和掌握numpy的知识,并且可以随时查阅和复习。这样可以帮助我更好地应用numpy进行数据分析和科学计算,并提高工作效率和代码质量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值