Python科学计算:Numpy学习4

昨天晚上看完二维数组的创建,今天就来看一看二维数组的其他操作:

首先:对于同维度的来说,操作是没啥好说的,但是,对于不同维度的数组数组之间的计算,Numpy通常会使用 “广播”机制把他们强制转换到共同状态,然后就可以操纵了:

如果说参数的形状相同,或者是他们可以满足广播运算的法则,那么运算结果也符合预期的。

虽然说是切片有很多快捷方式,但是,最安全的方式 还是明确维度:

当然,np有可以扩展到多维的,但是,除了meshgrid函数以外(他只能是二维空间),其他的都可以

Numpy处理流:

1、输入:这里比如说,我有一个“0ns.txt”文件,里面的数据是60*60个浮点数,那怎么用numpy读入嘞(这别想着用pandas,我们今天讲的是numpy),先跟着书上的讲解,看怎么生成文件

import numpy as np
array1=np.array([1,2,3,4],dtype=int)
arrray2=np.array([37.4,47.3,73.4,99])
outfile=open("your file's location","w")
outfile.write("xxxxxxxxxxxxxxxxxxxxxxx")
for a1,a2 in zip(array1,array2):
    outfile.write((a1,a2))
outfile.close()

比如说,我用上面的代码写一个new文件:

现在,考虑怎么读入:

import numpy as np
infile=open("C:/Users/L/Desktop/new.txt","r")
l=[]
l2=[]
temp=infile.readline()
for line in infile:
    word=line.split()
    l.append()
    l2.append()
infile.close()
a=np.array(l,dtype=int)
b=np.array(l2)
print(a)
print(b)

我这个有错误,刚才觉得自己说错话了,pandas真的香,还是用pandas读取和写文件吧

唉,我觉得读入读出文件的工作还是留给python吧,人那个简单啊,pd.readcsv是吧,多简单

好了,那np的读入读出就不搞了,直接学通用函数:

  1. 最大最小,平均值,中位值:

import numpy as np
np.max()
np.nanmax()
np.min()
np.nanmin()
np.isnan()
np.isfinite()
np.mean()
np.median()
  1. 求和,乘积:

import numpy as np
np.sum()
#如果是多个维度的话,就要单独求和
#行求和:
np.sum(x,axis=1)
#列求和:
np.sum(x,axis=0)
#产生和x形状相同但是又累积和的数组求和:
np.cumsum(x)
#产生乘积:
np.prod()
np.cumprod()
  1. 简单的统计:

上面已经把最大最小平均中位这些统计学常用的数值写了,看下面的:

#加权平均:
np.average(x,axis=None,weights=None)
weights必须是和x相同形状的数组,或者是和x的某个切片形状相同的数组
#方差:
np.var(x,axis=0,ddof=0)
#如果x的元素是复数,那么平方运算用的是一个复数共轭,ddof是自由度,如果我们制定了ddof=i
#那么,我们计算的时候,分母就是n-ddof,这个可以很方便的计算S*
#还有包括:
np.corrcoeff()
np.correlate()
np.cov()
#等诸多函数,需要的时候numpy的官方文档还是要好好去读的,

那这里我就把numpy的官方文档地址给附上:NumPy 文档 — NumPy v1.24 手册,想学的可以直接跟着文档去学。

  1. 单变量的多项式处理:

对于一个函数:

Python对他的存储很简单:,就是直接给搞个列表存着,

numpy定义多项式的一种比较抽象的方法就是指定其根的列表,将系数列表定义成一个整体因子,丙炔函数np.poly也是选择C[0]=1,就是一元多项式,而多项式回归的话,np.poly.fit(x,y,n),可以提供一个包含x值的列表/数组x,包含y值的数组/列表y,以及一个给定阶n的未知多项式来寻求最佳拟合的最小二乘法,如果说是给定了多项式的系数,那么np.root函数可以用来求根,比较常用的方法就是,给定系数数组和单个x值/x值数组,用np.polyval返回相应的y值:

import numpy as np
roots=[0,1,1,2]
coeffs=np.poly(roots)
print("coeff:",coeffs)
print("np.roots(coeffs)=\n",np.roots(coeffs))
x=np.linspace(0,0.5*np.pi,7)
y=np.sin(x)
c=np.polyfit(x,y,3)
print("c=\n",c)
y1=np.polyval(c,x)
print("y=\n",y,"\ny1=\n",y1,"\ny1-y=\n",y1-y)

好了,还有很多函数,像:np.polyint之类的,都可以在文档里面查找学习,今天的numpy就先学到这里,下午学习线性代数的相关内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值