numpy函数学习

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以函数式创建数组

从函数中创建数组

扫描二维码关注公众号,回复: 3468637 查看本文章

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

猜你喜欢

转载自blog.csdn.net/longshengguoji/article/details/53509621