您的位置:首页 > 编程语言 > Python开发

NumPy——快速处理数据

2017-07-12 22:20 274 查看

1. 创建数组

#导入NumPy函数库
import numpy as np
#创建一个一维数组
a = np.array([1,2,3,4])
#创建双精度一维数组
b = np.array([5,6,7,8],dtype=np.complex)
#创建一个shape初始值为(3,4)的数组
c = np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])
#更改数组shape属性,当某个轴的元素个数为-1时,shape自动计算
c.shape=4,3
#定义指定形状的数组
d = a.reshape((2,2))
#arrange()通过指定开始值、终值、步长创建等差一维数组
print(np.arange(0,1,0.1))
#linspace()通过指定开始值、终值、元素个数创建等差一维数组,endpoint=true时包含终止值
print(np.linspace(0,1,10,endpoint=False))
#logspace()构造从base^a到base^b,包含n个元素的等比数组
print(np.logspace(0,1,12,base=2,endpoint=False))
#zeros()将数组元素初始化为0
print(np.zeros((2,3),np.float))
#将字符串转化为数组
s="abcdefgh"
print(np.fromstring(s,dtype=np.int8))


2.数组存取

a[m:n]

代表截取下标为m到n-1的数组片段

3.结构体数组

#导入NumPy函数库
import numpy as np
#创建结构体数组,其中'S32'==长度32字节字符串,‘i’==np.int32,'f'==np.float32,
person = np.dtype({
'names':['name','age','weight'],
'formats':['S32','i','f']
},align=True)
a = np.array([("zhang",32,75.5),("wang",24,65.2)],dtype=person)


4.ufunc运算

4.1 数组运算对应的ufunc函数

PS:其中第三维代表结果保存的位置



4.2 比较和布尔运算,返回值为一个有布尔值构成的数组



4.3 与或非及异或运算

调用下列函数,在括号中写运算条件,多个条件用逗号分隔:

np.logical_and()

np.logical_not()

np.logical_or()

np.logical_xor()

4.4 自定义ufunc函数

#导入NumPy函数库
import numpy as np
#自定义函数
def trangle_wave(x,c,c0,hc):
x=x-int(x)
if x >= c: r=0.0
elif x < c0 : r = x/ c0 *hc
else: r = (c-x)/(c-c0)*hc
return r

x = np.linspace(0,2,10)
#调用frompyfunc(),将自定义函数转化为能对数组中每个元素计算的ufunc函数
trangle_fun1=np.frompyfunc(trangle_wave,4,1)
y2 = trangle_fun1(x,0.6,0.4,1.0)
print(y2)


5.线性代数

5.1 dot()运算

前两维的计算意义在代码注释中,对于多维数组,其运算结果相当于数组a的最后一维与数组b的倒数第二维的所有元素乘积之和

#导入NumPy函数库
import numpy as np
#对于二维数组,dot()相当于矩阵乘积运算
a = np.random.randint(0,9,12).reshape(3,4)
#print(a)
b = np.random.randint(0,9,16).reshape(4,4)
#print(b)
c = np.dot(a,b)
print(c)
#对于一维数组,dot()相当于内积计算,即数组对应下标的乘积之和
d=np.array([1,2,3])
e=np.array([1,2,3])
f = np.dot(d,e)
print(f)


5.2 求解多元一次线性方程组:

numpy提供的线性代数模块中:

inv()用来计算矩阵的逆,

solve()用来求解多元一次方程组,其求解相当于找到一个长度为N的一维数组x,使得a·x=b

#导入NumPy函数库
import numpy as np

a = np.random.rand(10,10)
b = np.random.rand(10)
x = np.linalg.solve(a,b)
print(x)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: