Numpy学习

Numpy学习,第1张

目录

数组的关键属性

一维数组 二维数组

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]]
'''

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/589714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-13
下一篇 2022-04-13

发表评论

登录后才能评论

评论列表(0条)

保存