目录
数组的关键属性
一维数组 二维数组
Numpy特殊数组 zeros(),ones(),empty()
Numpy序列数组
Numpy数组序列
Numpy 数组运算
Numpy 数组的复制
Numpy矩阵
python用一组数据来保存一组值,可以将列表当成数组使用。
python中有array模块,但它不支持多维数组,无论是列表还是array模块都没有科学运算函数,不适合做矩阵等科学计算。
因此Numpy没有使用python本身的数组机制,而是提供了ndarray数组对象,该对象不但可以方便的存储数组,而且拥有丰富的数组计算函数,比如向量的加法、减法、乘法等。
- 维度(ndim)
- 形状(shape)
- 数据类型(dtype)
import numpy as np
a=np.array([1,2,3])
print("一维数组:",a)
a=np.array([1,2,3],dtype=complex)
print("一维复数数组:",a)
b=np.array([[1,2,3],[4,5,6]])
print("二维数组:",b)
'''输出结果为:
一维数组: [1 2 3]
一维复数数组: [1.+0.j 2.+0.j 3.+0.j]
二维数组: [[1 2 3]
[4 5 6]]
'''
Numpy特殊数组 zeros(),ones(),empty()
x=np.zeros(6)
print("zeros数组,默认数据类型为float:",x)
y=np.zeros(6,dtype=np.int)
print(y)
x=np.ones(8)
print("ones数组,默认类型是float:",x)
y=np.ones((4,4),dtype=int)
print("二维ones数组:",y)
x=np.empty((2,5))
print("全空数组:",x)
'''输出结果为:
zeros数组,默认数据类型为float: [0. 0. 0. 0. 0. 0.]
[0 0 0 0 0 0]
ones数组,默认类型是float: [1. 1. 1. 1. 1. 1. 1. 1.]
二维ones数组: [[1 1 1 1]
[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]
全空数组: [[1.16019646e-311 1.16019218e-311 1.16019646e-311 1.16019218e-311
1.16019208e-311]
[1.16019646e-311 1.16019218e-311 1.16019646e-311 1.16019218e-311
1.16019208e-311]]
'''
Numpy序列数组
arange()开始值,结束值,步长
linspace()开始值,结束值,元素数量
numpy1=np.arange(1,120,4)
print("利用arange函数创建等差序列数组:",numpy1)
numpy2=np.linspace(0,8,20)
print("利用linspace创建等差序列数组",numpy2)
'''输出结果为:
利用arange函数创建等差序列数组: [ 1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69
73 77 81 85 89 93 97 101 105 109 113 117]
利用linspace创建等差序列数组 [0. 0.42105263 0.84210526 1.26315789 1.68421053 2.10526316
2.52631579 2.94736842 3.36842105 3.78947368 4.21052632 4.63157895
5.05263158 5.47368421 5.89473684 6.31578947 6.73684211 7.15789474
7.57894737 8. ]
'''
Numpy数组序列
索引从0开始,其 *** 作与列表基本相同
numpy1=np.array([[8,6,5.2],[3.5,-8,0.59],[1,2,3],[4,5,6]])
print("显示数组中所有数据",numpy1)
print("显示数组中第一行元素",numpy1[0])
print("显示数组第一列元素",numpy1[:,0])
print("显示数组中第一行第二列元素",numpy1[0,1])
a=[0,1,2]
print("显示数组中第
一、
二、三行元素",numpy1[a])
'''输出结果:
显示数组中所有数据 [[ 8. 6. 5.2 ]
[ 3.5 -8. 0.59]]
显示数组中第一行元素 [8. 6. 5.2]
显示数组第一列元素 [8. 3.5]
显示数组中第一行第二列元素 6.0
显示数组中第
一、
二、三行元素 [[ 8. 6. 5.2 ]
[ 3.5 -8. 0.59]
[ 1. 2. 3. ]]
'''
Numpy 数组运算
numpy数组运算是指numpy数组中元素的加、减、乘、除、最大值、最小值
numpy1=np.array([8,6,5.2])
numpy2=np.array([3.5,-8,0.59])
print("加法",numpy1+numpy2)
print("减法",numpy1-numpy2)
print("乘法",numpy1*numpy2)
print("除法",numpy1/numpy2)
print("乘方",numpy1**2)
print("点乘",np.dot(numpy1,numpy2))#将数组乘法得到的数相加
print("大小比较",numpy1>=numpy2)
print("最大值",numpy1.max())
print("最小值",numpy2.min())
print("数组和",numpy1.sum())
'''输出结果为:
加法 [11.5 -2. 5.79]
减法 [ 4.5 14. 4.61]
乘法 [ 28. -48. 3.068]
除法 [ 2.28571429 -0.75 8.81355932]
乘方 [64. 36. 27.04]
点乘 -16.932
大小比较 [ True True True]
最大值 8.0
最小值 -8.0
数组和 19.2
'''
Numpy 数组的复制
浅复制:通过数组变量的复制完成,只复制数组的引用,这样对浅复制数组中的元素进行修改时,原数组中对应的元素也会被修改
深复制:使用数组对象的copy方法完成,是对存储内存进行复制。
这样对深复制数组中的元素进行修改时,原数组中的对应元素不会被修改
numpy1=np.array([7,4,7.9])
numpy2=numpy1
print("浅复制的数组",numpy2)
numpy2[1]=10
print("浅复制修改后的数组",numpy2)
print("原数组numpy1",numpy1)
numpy3=np.zeros(3)
numpy4=numpy3.copy()
print("深复制的数组",numpy4)
numpy4[1]=99
print("深复制修改后的数组",numpy4)
print("原数组numpy3",numpy3)
'''输出结果为:
浅复制的数组 [7. 4. 7.9]
浅复制修改后的数组 [ 7. 10. 7.9]
原数组numpy1 [ 7. 10. 7.9]
深复制的数组 [0. 0. 0.]
深复制修改后的数组 [ 0. 99. 0.]
原数组numpy3 [0. 0. 0.]
'''
Numpy矩阵
matrix矩阵对象的计算遵循矩阵数学运算规律,即矩阵的乘、转置、求逆等
numpy1=np.matrix([[1,2,3],[4,5,6],[7,8,9]])
print("矩阵数据内容",numpy1)
numpy2=numpy1.T
print("转置后的numpy1",numpy2)
print("矩阵乘法",numpy1*numpy2)
numpy3=numpy1.I
print("矩阵的逆",numpy3)
'''输出结果为:
矩阵数据内容 [[1 2 3]
[4 5 6]
[7 8 9]]
转置后的numpy1 [[1 4 7]
[2 5 8]
[3 6 9]]
矩阵乘法 [[ 14 32 50]
[ 32 77 122]
[ 50 122 194]]
矩阵的逆 [[ 3.15251974e+15 -6.30503948e+15 3.15251974e+15]
[-6.30503948e+15 1.26100790e+16 -6.30503948e+15]
[ 3.15251974e+15 -6.30503948e+15 3.15251974e+15]]
'''
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)