Python numpy的基本操作你一般人都不会(python官网)

网友投稿 313 2022-06-19


0、NumPy 与 ndarry

NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生。

它提供:

快速高效的多维数组对象 ndarray;

直接对数组执行数学运算及对数组执行元素级计算的函数;

线性代数运算、随机数生成;

将 C、C++、Fortran 代码集成到 Python 的工具等。

它专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA 用其处理一些本来使用 C++,Fortran 或Matlab 等所做的任务。

ndarray 是一个多维的数组对象,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点。

ndarray 的一个特点是同构:即其中所有元素的类型必须相同。

1、数组属性查看:类型、尺寸、形状、维度

import numpy as np

a1 = np.array([1,2,3,4],dtype=np.complex128)

print(a1)

print("数据类型",type(a1)) #打印数组数据类型

print("数组元素数据类型:",a1.dtype) #打印数组元素数据类型

print("数组元素总数:",a1.size) #打印数组尺寸,即数组元素总数

print("数组形状:",a1.shape) #打印数组形状

print("数组的维度数目:",a1.ndim) #打印数组的维度数目

1

2

3

4

5

6

7

8

2、numpy元素中数据存储方式,数据类型,类型转换

2.1 查看元素数据存储类型

dtype=。。。 可作为参数输入到之后的类型转换新array建立函数中,作为array初始化的参数选择。

import numpy as np

#指定数据 dtype

a = np.array([2,23,4],dtype=np.int)

print(a.dtype)

# int 64

a = np.array([2,23,4],dtype=np.int32)

print(a.dtype)

# int32

a = np.array([2,23,4],dtype=np.float)

print(a.dtype)

# float64

a = np.array([2,23,4],dtype=np.float32)

print(a.dtype)

# float32

a = np.array([1,2,3,4],dtype=np.complex128)

print(a.dtype)

# complex128

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

2.2 元素数据存储类型转换

import numpy as np

# 通过 ndarray 的 astype() 方法进行强制类型转换

# astype 会创建一份新的数组,即便是指定为同类型也依然如此

# 浮点数转换为整数时小数部分会被舍弃:

a = np.array([2.5,3.1,4.9],dtype=np.float32)

b = a.astype(np.int64)

print(b.dtype)

print(b)

# 如果某字符串类型的数组里的元素全是数字,也可以通过此方法直接转换成数值类型

a = np.array(["2.5","3.1","4.9"],dtype=np.float32)

b = a.astype(np.float64)

print(b.dtype)

print(b)

1

2

3

4

5

6

7

8

9

10

11

12

13

3、List类型与numpy. ndarray类型的互相转换

array函数接受一切序列类型的对象

import numpy as np

list1 = [1,2,3,4,5]

#List转numpy.array:

temp = np.array(list1)

print(temp)

print("数据类型",type(temp)) #打印数组数据类型

print("数组元素数据类型:",temp.dtype) #打印数组元素数据类型

print("数组元素总数:",temp.size) #打印数组尺寸,即数组元素总数

print("数组形状:",temp.shape) #打印数组形状

#numpy.array转List:

arr = temp.tolist()

print(arr)

print("数据类型",type(arr)) #打印数组数据类型

1

2

3

4

5

6

7

8

9

10

11

12

13

4、创建 ndarray 数组

4.1 方法一:列表转换

import numpy as np

#创建数组

array = np.array([[1,2,3],[2,3,4]]) #列表转化为矩阵

print(array)

print('number of dim:',array.ndim) # 维度

# number of dim: 2

print('shape :',array.shape) # 行数和列数

# shape : (2, 3)

print('size:',array.size) # 元素个数

# size: 6

1

2

3

4

5

6

7

8

9

10

4.2 zero,ones,empty函数创建特殊数组

zeros() 函数和 ones() 函数这两个函数分别可以创建指定长度或形状的全0或全1的 ndarray 数组

empty() 函数这个函数可以创建一个没有任何具体值的 ndarray 数组,需要注意一点的是,这个函数返回的值不一定是 0,可能是其他未初始化的垃圾值。

import numpy as np

#创建全零数组

a = np.zeros((3,4)) # 数据全为0,3行4列

print('a:',a)

b = np.zeros(a.shape) # 数据全为0,3行4列

print('b:',b)

#创建全一数组, 同时也能指定这些特定数据的 dtype:

a = np.ones((3,4),dtype = np.int) # 数据为1,3行4列

print('a:',a)

b = np.ones(a.shape) # 数据全为0,3行4列

print('b:',b)

#创建全空数组, 其实每个值都是接近于零的数:

a = np.empty((3,4)) # 数据为empty,3行4列

print('a:',a)

b = np.empty(a.shape) # 数据全为0,3行4列

print('b:',b)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

4.3 arrange linspace 创建线性数组

import numpy as np

#用 arange 创建连续数组:

a = np.arange(10,20,2) # 10-19 的数据,2步长

print(a)

#使用 reshape 改变数据的形状

a = np.arange(12).reshape((3,4)) # 3行4列,0到11

print(a)

#用 linspace 创建线段型数据:

a = np.linspace(1,10,20) # 开始端1,结束端10,且分割成20个数据,生成线段

print(a)

#同样也能进行 reshape 工作:

a = np.linspace(1,10,20).reshape((5,4)) # 更改shape

print(a)

1

2

3

4

5

6

7

8

9

10

11

12

13

5、矩阵的索引与打印

import numpy as np

#一维索引

A = np.arange(3,15)

print('A = ',A)

print('A[3] = ',A[3]) # 6

#二维

A = np.arange(3,15).reshape((3,4))

print('A = ',A)

print('A[2] = ',A[2])

print('A[2][]2 = ',A[2][2])

print('A[2,2] = ',A[2,2])

print('A[1, 1:3] = ',A[1, 1:3])

print('row = ')

for row in A:

print(row)

print('column = ')

for column in A.T:

print(column)

#flatten是一个展开性质的函数,将多维的矩阵进行展开成1行的数列。而flat是一个迭代器,本身是一个object属性。

print('A.flatten = ',A.flatten())

print('A.flat ===== 所有元素逐个打印')

for item in A.flat:

print(item)

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

6、矩阵的运算

6.1 基础运算

import numpy as np

array1 = np.array([[1,2,3],[2,3,4]]) #列表转化为矩阵

array2 = np.array([[2,3,4],[3,4,5]]) #列表转化为矩阵

# 减法

array3 = array2 - array1

print(array3)

# 加法

array3 = array2 + array1

print(array3)

# 对应元素相乘

array3 = array2 * array1

print(array3)

# 对应元素乘系数

array4 = array1 * 2

print(array4)

# 对应元素次方

array4 = array1 ** 2

print(array4)

# 对应元素正弦

array4 = np.sin(array1)

print(array4)

# 比较符号

array5 = array1>2

print(array5)

# 判断矩阵是否全部为正确

print(array5.all())

# 判断矩阵是否存在正确

print(array5.any())

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

6.2 点乘

import numpy as np

arr1=np.array([[1,


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Odoo12之开发过程中可能出现的问题(odoo开发难度大吗)
下一篇:python获取指定文件夹下的文件和文件夹(python读取文件夹下的所有文件)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~