numpy学习笔记

NumPy 简介

NumPy 是 Python 中用于数值计算的第三方库,名称来自 Numerical Python,意思是“数值计算的 Python”。

它的核心是多维数组 ndarray,方便我们存储数据,并对大量数据进行数学运算。

np的属性

import numpy as np

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

print(array)
print('number of dim:', array.ndim)  #np数组的维度
print('shape:', array.shape)         #np数组的形状
print('size:', array.size)           #np数组的元素总个数

image

np的创建 array

  • dtype= data type,数组内元素的数据类型
a = np.array([1,2,3],dtype=np.int64)
print(a)
a = np.array([1,2,3],dtype=np.float64)
print(a)

 

  • 零矩阵和一矩阵
a = np.zeros((3,4))
print(a)
a = np.ones((3,4))
print(a)

 

  • 有序数列的创建 np.arange(start,stop,step)
a = np.arange(10,20,2)
print(a)

 

  • reshape()变换列表形状
a = np.arange(12).reshape(3,4)
print(a)

image

 

  • 生成线段 linspace(start,stop,num) , num表示start和stop之间有多少个节点
a = np.linspace(1,10,6)
print(a)

image

numpy的基础运算

  • np数组的四则运算,直接对数组操作
a = np.array([10,20,30,40])
b = np.arange(4)
print(a,b)

c = a-b
print(c)

c = a+b
print(c)

c = b**2
print(c)

image

 

  • 通过print()使用条件表达式筛选数据
b = np.arange(4)
print(b)
print(b<3)
print(b==2)

image

 

  • 数组的各元素相乘和矩阵相乘
a = np.array([[1,1],
              [0,1]])
b = np.arange(4).reshape(2,2)
print(a,b,sep="\n")

c = a*b                 #a的各元素与b对应元素相乘
c_dot = np.dot(a,b)     #矩阵相乘

print(c)
print(c_dot)

image

 

  • 在np数组中找到特定的元素
a = np.random.random((2,4))     #生成2行4列的0-1之间的随机数

print(a)
print(np.sum(a))
print(np.min(a))
print(np.max(a))

image

 

  • axis的用法
    axis=0表示对列进行操作,axis=1表示对行进行操作
print(np.sum(a,axis=0))     #对于二维数组,axis=0表示对列进行操作,axis=1表示对行进行操作
print(np.min(a,axis=1))
print(np.max(a,axis=0))

image

 

  • 其他函数的用法
a = np.arange(2,14).reshape(3,4)
print(a)
print(np.argmin(a))         #最小值的索引
print(np.argmax(a))         #最大值的索引
print(np.mean(a))           #平均值
print(np.median(a))         #中位数
print(np.cumsum(a))         #累加

image

a = np.array([[1,0,5,2],
              [4,1,8,5],
              [8,7,3,9]])
print(np.diff(a))           #用来计算数组中相邻元素之间的差值, 后一个元素 − 前一个元素
print(np.nonzero(a))        #非零元素在数组中的位置
print(np.transpose(a))      #矩阵转置
print(np.clip(a,4,7))       #把数组中的元素限制在指定范围内

image

a = np.arange(3,15).reshape(3,4)
print(a.flatten())    #压缩为1维矩阵

image

numpy的array合并

  • 把两个数组上下合并和左右合并
a = np.array([1,1,1])
b = np.array([2,2,2])
c = np.vstack((a,b))        #上下合并
print(c)
d = np.hstack((a,b))        #左右合并
print(d)

image

 

  • 当我们需要把a和b转置后的数组进行合并时,我们先用a.T来看一下结果
a = np.array([1,1,1])
print(a.T)

image
     结果还是没变,这是因为a是一个一维数组,a.T并不对一维数生效
     我们可以使用[:,np.newaxis]来增加一列,[np.newaxis,:]来增加一行。: 表示原来的维度,在这个例子中就是3

a = np.array([1,1,1])
print(a[:,np.newaxis])  

image

a = np.array([1,1,1])[:,np.newaxis]
b = np.array([2,2,2])[:,np.newaxis]
c = np.hstack((a,b))
d = np.vstack((a,b))
print(c)
print(d)

image

 

numpy的array分割

  • np.split()只能把数组分成等份的数组,而np.array_split可以分成不等份的数组
a = np.arange(12).reshape(3,4)
print(a)
print(np.split(a,2,axis=1))        #axis=1表示对行进行操作,axis=0表示对列进行操作
print(np.split(a,3,axis=0))
print(np.array_split(a,3,axis=1))

image

 

numpy的copy和deep copy

  • 在numpy中,如果把一个变量赋值给另一个变量,则新的变量就是完完全全的被赋值的变量,即这两个变量指向同一块内存
a = np.array([1,2,3,4])
print(a)
a[0] = 11
b = a
print(b)
c = a
print(c)
d = b
print(d)

image

     同理,改变d的值同样也会改变a,b,c的值

d[1:3] = [22,33]
print(d)
print(a)
print(b)
print(c)

image

     如果我们只想单纯的把a赋值给b,但是不想把两者关联起来,就可以使用到np.copy(),即deep copy

b = np.copy(a)
a[3] = 44
print(a)
print(b)

image

 

✨ Process finished successfully!

posted @ 2026-10-12 21:39  EighthDay  阅读(8)  评论(1)    收藏  举报