Numpy学习

目录

数组的关键属性

一维数组 二维数组

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值