0


Python学习笔记——Numpy的初步学习

hello^-^,感谢各位的来访,祝南方的小伙伴小年快乐喔,也祝昨天的北方小伙伴小年快乐。

嘻嘻嘻

1.Numpy介绍

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

  • 一个强大的N维数组对象 ndarray
  • 广播功能函数
  • 整合 C/C++/Fortran 代码的工具
  • 线性代数、傅里叶变换、随机数生成等功能

2.数组

导入numpy模块,在numpy中数组是一个ndarray对象。

import numpy as np

2.1创建数组

numpy用array函数创建数组array([列表] / (元组)),n维数组由(n-1)维数组构成。

一维数组:

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

[1 2 3 4]

二维数组:

b=np.array([[0,1,2,3],
           [1,2,3,4],
           [2,3,4,5]])
print(b)
print("****************************")
print(b[0])
print(b[0][0])

[[0 1 2 3]
[1 2 3 4]
[2 3 4 5]]


[0 1 2 3]
0

三维数组: 由2个二维数组构成,1个二维数组又由3个一维数组构成,一维数组又由4个元素构成。

c=np.array([[[0,1,2,3],
             [1,2,3,4],
             [2,3,4,5]],
            [[9,8,7,6],
            [8,7,6,5],
            [7,6,5,4]]])
print(c)
print("****************************")
print(c[0])
print(c[0][0])
print(c[0][0][0])

[[[0 1 2 3]
[1 2 3 4]
[2 3 4 5]]

[[9 8 7 6]
[8 7 6 5]
[7 6 5 4]]]


[[0 1 2 3]
[1 2 3 4]
[2 3 4 5]]
[0 1 2 3]
0

2.2数组的属性

属性

描述

ndim

数组的维数

shape

数组的形状(几行几列)

size

数组元素的总个数

dtype

数组中元素的数据类型

itemsize

数组中每个元素的字节数

示例 :

b=np.array([[0,1,2,3],
           [1,2,3,4],
           [2,3,4,5]])
print(b.ndim)
print(b.shape)
print(b.size)
print(b.dtype)

2
(3, 4)
12
int32

asarray()函数也是将列表或元组转化为数组对象 ,但与array不同的是在数据源本身是ndarray对象时:array()仍然会复制出一个副本,asarray()则直接引用了本来的数组(ndarray对象改变,跟着改变)

示例:

arr1=np.array([[1,1,1],[1,1,1],[1,1,1]])
arr2=np.array(arr1)
arr3=np.asarray(arr1)
arr1[0][0]=2
print("arr1数组为>\n",arr1)
print("arr2数组为>\n",arr2)
print("arr3数组为>\n",arr3)

arr1数组为>
[[2 1 1]
[1 1 1]
[1 1 1]]
arr2数组为>
[[1 1 1]
[1 1 1]
[1 1 1]]
arr3数组为>
[[2 1 1]
[1 1 1]
[1 1 1]]

2.3创建特殊的数组

函数
功能描述
np.arange(起始数字,结束数字,步长,dtype=数据类型)#前闭后开

创建数字序列数组

np.ones(shape,dtype=数据类型)

创建全1数组

np.zeros(shape,dtype=数据类型)

创建全0数组

np.eye(N,M,k=0, dtype=数据类型)

#k为对角元素的索引,N为行,M为列,若省略M则创建方阵

创建返回对角线为1的矩阵

np.linspace(起始数字,结束数字,结束个数,dtype=数据类型)#闭区间

创建等差矩阵

np.logspace(start,stop,结束个数num=,base=,dtype=数据类型)

#base的start次方到base的stop次方总共有num个元素。

创建等比矩阵

示例

a=np.arange(1,10,2)
b=np.ones((3,2),dtype=int)
c=np.zeros((3,2),dtype=int)
d=np.eye(4,dtype=int,k=1)
e=np.linspace(2,8,7,dtype=int)
f=np.logspace(2,10,9,base=2,dtype=int)
print("a数组为>\n",a)
print("b数组为>\n",b)
print("c数组为>\n",c)
print("d数组为>\n",d)
print("e数组为>\n",e)
print("f数组为>\n",f)

a数组为>
[1 3 5 7 9]
b数组为>
[[1 1]
[1 1]
[1 1]]
c数组为>
[[0 0]
[0 0]
[0 0]]
d数组为>
[[0 1 0 0]
[0 0 1 0]
[0 0 0 1]
[0 0 0 0]]
e数组为>
[2 3 4 5 6 7 8]
f数组为>
[ 4 8 16 32 64 128 256 512 1024]

2.4数组切片操作

2.4.1——一维数组的切片

切片操作-数组名[start:stop:step]——start为切片起始下标,stop为切片停止下标(不包含该下标数组值),即左闭又开,step为切片步长。

import numpy as np
import random
a=np.arange(10)         #0-9的闭区间
print(a)
print(a[0:9:2])

[0 1 2 3 4 5 6 7 8 9]
[0 2 4 6 8]

2.4.3——二维数组的切片

import numpy as np
a=np.array([[1,2,3,4],[5,6,7,8],[5,1,2,4]])
print(a[0:2,0:2])
print(a[:,2])
print(a[2,0:2])

[[1 2]
[5 6]]
[3 7 2]
[5 1]

二维数组的切片为先对行切片再对列切片,中间逗号隔开 ,若为数字则为数字索引的行/列。

注意:

a[ : ,2]操作为先对每行切片,再对索引为2即第三列切,这里生成的数组为一维数组不是二维数组

2.4.4——三维数组的切片

t=np.array([[[1,2,3],[4,5,6]],[[7,8,9],[4,4,4]]])
print(t[:,:,0])

[[1 4]
[7 4]]

三维数组切片同理二维数组

注意:

t[ : , : ,0]操作为先切出三维数组的每个数组即2个二维数组,再切除每一行,最后切第一列,得到1个二维数组。

2.5——reshape与resize

函数功能描述np.reshape(shape)不改变当前数组,按照shape创建新的数组np.resize(shape)改变当前数组,按照shape创建新的数组
当改变形状时,应该考虑到数组中元素的个数,确保改变前后,元素总个数相等。

import numpy as np
import random
t=np.arange(12)
print(t)
print("reshape操作\n")
t.reshape(3,4)
print(t)
print("resize操作\n")
t.resize(3, 4)
print(t)

[ 0 1 2 3 4 5 6 7 8 9 10 11]
reshape操作

[ 0 1 2 3 4 5 6 7 8 9 10 11]
resize操作

[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]

可利用reshape(-1)将二位数组转换为一维数组

3.数组运算

这里拿加法举例子

a=np.array([0,1,2,3])
b=np.array([1,1,1,1])
print(a+b)

[1 2 3 4]

可见对应下标数值相加

一维数组也可和多维数组相加,相加时一维数组扩展至多维

a=np.array([0,1,2,3])
c=np.array([[1,1,1,1],[2,2,2,2],[3,3,3,3]])
print(a+c)

[[1 2 3 4]
[2 3 4 5]
[3 4 5 6]]

  • 数组的减法、乘法、除法运算,和加法运算规则相同。
  • 当两个数组元素的数据类型不同时,精度低的数据类型会向精度高的转换再进行运算。

**幂运算 :对数组每个元素求n次方

a=np.arange(12).reshape(3,4)
print(a,"\n")
print(a**2)

[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]

[[ 0 1 4 9]
[ 16 25 36 49]
[ 64 81 100 121]]

4.个人总结

以上就为本人对numpy模块数组操作的一部分的简单学习,感谢各位的观看,希望各位也能有所收获,并与我讨论,谢谢大家!!!!!!最后祝大家身体健康,万事如意!!!


本文转载自: https://blog.csdn.net/bang___bang_/article/details/122709119
版权归原作者 bang___bang_ 所有, 如有侵权,请联系我们删除。

“Python学习笔记——Numpy的初步学习”的评论:

还没有评论