numpy函数
1.shape函数
它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度。它的输入参数可以使一个整数表示维度,也可以是一个矩阵
2.tile函数
他的功能是重复某个数组。比如tile(A,n),功能是将数组A重复n次,构成一个新的数组
3.数组对象
数组是numpy中最重要的对象,我们通常使用array()方法来创建对象,他的参数是一个list对象
4.reshape方法
它就是用于该表数组的形状的,它是数组对象中的方法
5.dtype数组元素类型
数组元素的类型可以通过dtype属性获得
6.arange详解
arange函数用于创建等差数组,使用频率非常高,arange非常类似range函数,会python的人肯定经常用range函数,比如在for循环中,几乎都用到了range,
7.linespace创建等差数列
用于创建一个一位数组,并且是等差数列构成的一位数组,它蕞常用的有三个参数,当然不只有三个参数,第一个参数表示起始点、第二个参数表示终止点,第三个参数表示数列的个数
8.logspace创建等比数列
创建等比数列
9,zeros创建0矩阵
创建均为0的数组
10.ones和empty创建数组
使用ones可以创建任意维度和元素个数的数组,其元素均为1。empty函数的使用方法一样,只是它创建的是数组所有元素均为空,所以它是速度最快的创建数组的方法。
11.fromfunction以函数式创建数组
从函数中创建数组
12.数组切片
对数组进行切片处理
* numpy中引入所有
from numpy import *
* 创建一个包含10个元素的一维数组
a = arange(10)
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])```
* 可以使用一个下标获取数组中的值,也可以更改他<br/>
``` python
a[5]
5
a[5]=54
a
array([ 0, 1, 2, 3, 4, 54, 6, 7, 8, 9])
<div class="se-preview-section-delimiter"></div>
- 使用冒号获取连续几个元素,如获取第4个到第6个
a[3:6]
array([ 3, 4, 54])
<div class="se-preview-section-delimiter"></div>
这里取索引的规则是[),取上界,不取下界
* 省略冒号前的数字,表示从0开始
a[:6]
array([ 0, 1, 2, 3, 4, 54])
<div class="se-preview-section-delimiter"></div>
- 使用负数表示从后往前数第N个数(第N个数字不取)
a[:-1]
array([ 0, 1, 2, 3, 4, 54, 6, 7, 8])
<div class="se-preview-section-delimiter"></div>
- 还可以设置步长读取数组元素
a[1:9:2]
array([ 1, 3, 54, 7])
<div class="se-preview-section-delimiter"></div>
- 步长为-1,其他参数不设置,就是将数组进行倒叙排列
a[::-1]
array([ 9, 8, 7, 6, 54, 4, 3, 2, 1, 0])
<div class="se-preview-section-delimiter"></div>
13.切片数组共享内存
使用切片的方法获取数组的一部分,并没有创建新的数组,而切片只是原始数组的一种视图,所以改变切片中的数值,也会改变原始数组的元素值
想要保证原始数组的值不发生变化,我们最好使用copy方法获取数组
14.数组的列表下标存取方法
除了使用切片存取数组的元素之外,还可以使用整数列表作为下标存取方法
数组索引从0开始计数
继续使用12节的数组进行操作
* 假如要读取下标为2,4,6,8的数组元素,我们可以写用列表[2,4,6,8]作为下标
a[[1,3,5,7]]
array([ 1, 3, 54, 7])
<div class="se-preview-section-delimiter"></div>
这种方式获取的数组并不与原数组共享内存,所以改变一个数组的元素并不改变另一个数组中对应元素的值
15.以数组为下标读取数组
使用列表最为下标读取数组外,我们还可以使用数组作为下标
<div class="se-preview-section-delimiter"></div>
#引入Numpy
from numpy import *
<div class="se-preview-section-delimiter"></div>
#创建二维数组,作为下标数组
e=arange(10).reshape(2,5)
<div class="se-preview-section-delimiter"></div>
#创建数组啊,作为要读取的数组
a=arange(100,50,-3)
<div class="se-preview-section-delimiter"></div>
#使用e作为下标,对数组进行索引
f=a[e]
f
<div class="se-preview-section-delimiter"></div>
输出为
array([[100, 97, 94, 91, 88],
[ 85, 82, 79, 76, 73]])
<div class="se-preview-section-delimiter"></div>
16.多维数组切片存取
多维数组和一维数组的存取方法类似,本文介绍使用切片来存取一个二维数组,多维数组道理一样
<div class="se-preview-section-delimiter"></div>
#引入Numpy
from numpy import *
<div class="se-preview-section-delimiter"></div>
#创建一维数组
a=arange(49)
print(a)
<div class="se-preview-section-delimiter"></div>
#将一维数组重新组织成一个二维数组
b=a.reshape(7,7)
print(b)
<div class="se-preview-section-delimiter"></div>
#使用切片来读取第一行中的第二和第三个数,
<div class="se-preview-section-delimiter"></div>
#其中逗号前的数字表示行的范围,逗号之后表示列的取值范围
c=b[0,2:5]
print(c)
<div class="se-preview-section-delimiter"></div>
#可以返回二维数组
d=b[3:5,1:3]
print(d)
<div class="se-preview-section-delimiter"></div>
输出为:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48]
[[ 0 1 2 3 4 5 6]
[ 7 8 9 10 11 12 13]
[14 15 16 17 18 19 20]
[21 22 23 24 25 26 27]
[28 29 30 31 32 33 34]
[35 36 37 38 39 40 41]
[42 43 44 45 46 47 48]]
[2 3 4]
[[22 23]
[29 30]]
<div class="se-preview-section-delimiter"></div>
17.diag函数
diag()返回一个矩阵的对角线元素,或者创建一个对角阵
* 创建对角矩阵
<div class="se-preview-section-delimiter"></div>
#创建对角矩阵
import numpy
a = numpy.diag((1,2,3,4))
print(a)
<div class="se-preview-section-delimiter"></div>
输出为:
[[1 0 0 0]
[0 2 0 0]
[0 0 3 0]
[0 0 0 4]]
<div class="se-preview-section-delimiter"></div>
- 提取矩阵对角线元素
<div class="se-preview-section-delimiter"></div>
#提取矩阵对角线元素
import numpy
a = numpy.arange(1,10).reshape(3,3)
print(a)
b = diag(a)
print(b)
<div class="se-preview-section-delimiter"></div>
输出为:
[[1 2 3]
[4 5 6]
[7 8 9]]
[1 5 9]
<div class="se-preview-section-delimiter"></div>
- diag还可以接受两个参数,第二个参数为从对角线开始移动X个位置后的对角线元素,正数为向右移动,负数为像左移动
<div class="se-preview-section-delimiter"></div>
#提取矩阵对角线右移一位元素
import numpy
a = numpy.arange(1,10).reshape(3,3)
b = diag(a,1)
print(b)
<div class="se-preview-section-delimiter"></div>
输出为:
[2 6]
<div class="se-preview-section-delimiter"></div>
<div class="se-preview-section-delimiter"></div>
#提取矩阵对角线右移一位元素
import numpy
a = numpy.arange(1,10).reshape(3,3)
b = diag(a,-1)
print(b)
<div class="se-preview-section-delimiter"></div>
输出为:
[4 8]
<div class="se-preview-section-delimiter"></div>
18.all()和any()比较矩阵
假如我们想要知道矩阵a和矩阵b中所有对应元素是否相等,我们需要使用all方法,假如我们想要知道矩阵a和矩阵b中对应元素是否有一个相等,我们需要使用any方法。
<div class="se-preview-section-delimiter"></div>
#提取矩阵对角线右移一位元素
import numpy
<div class="se-preview-section-delimiter"></div>
#创建两个数组
a = array([1,2,3,4,5])
b = array([1,2,3,4,5])
c = array([1,2,3,4,6])
print((a==b).all())
print((a==c).all())
print((a==c).any())
<div class="se-preview-section-delimiter"></div>
输出为:
True
False
True