人工智能系列-numpy(三)

🌈个人主页:羽晨同学

💫个人格言:"成为自己未来的主人~"

副本和视图

副本

副本是一个数据的完整的拷贝,如果我们对副本进行修改,它不会影响到原始数据,物理内存不再同一位置。副本一般发生在Python序列的切片操作,调用deepCopy()函数。调用ndarray的copy()函数产生一个副本。

视图

视图是数据的一个别称或者引用,通过该别称或引用亦便可访问,操作原有数据,但原有数据不会产生拷贝,如果我们对视图进行修改,它会影响到原始数据,物理内存在同一位置。

视图一般发生在numpy的切片操作返回原数据的视图,调用ndarray的view()函数产生一个视图。

赋值

简单的赋值不会创建数组对象的副本。相反,它使用原始数组的相同id()来访问它,id()返回Python对象的通用标识符,类似于C中的指针。

此外,一个数组的任何变化都反映在另一个数组上。例如:一个数组的形状改变也会改变另一个数组的形状。

python 复制代码
import numpy as np
a=np.arange(6)
print('我们的数组是:')
print(a)
print('调用id()函数:')
print(id(a))
print('a复制给b')
b=a
print(b)
print('b具有的id()')
print(id(b))
print('修改b的形状')
b.shape=3,2
print(b)
print('a的形状也改变了')
print(a)

视图或浅拷贝

ndarray.view()方会创建一个新的数组对象,该方法创建的新数组的维数变化不会改变原始数据的维数

python 复制代码
import numpy as np
a=np.arange(6).reshape(2,3)
print('数组a: ')
print(a)
print('创建a的视图: ')
b=a.view()
print(b)
print('两个数组的id()不相同:')
print('a的id()')
print(id(a))
print('b的id()')
print(id(b))
b.shape=3,2
print('b的形状:')
print(b)
print('a的形状:')
print(a)

而使用切片创建视图修改数据会影响到原始数组:

python 复制代码
import numpy as np

arr=np.arange(12)
print('我们的数组: ')
print(arr)
print('创建切片:')
a=arr[3:]
b=arr[3:]
a[1]=123
b[2]=234
print(arr)
print(id(a))
print(id(b))
print(id(arr))

副本或深拷贝

ndarray.copy()函数创建一个副本,对副本数据进行修改,不会影响到原始数据,它们物理内存不在同一位置。

python 复制代码
import numpy as np
a=np.array([[10,10],[2,3],[4,5]])
print('数组 a')
print(a)
print('创建a的深层副本:')
b=a.copy()
print('数组b')
print(b)
print('我们能够写入b来写入a吗?')
print(b is a)
print('修改b的内容:')
b[0,0]=100
print('修改后的数组b:')
print(b)
print('a保持不变:')
print(a)

NumPy Matplotlib

Matplotlib是Python的绘图库,它可与NumPy一起使用,提供了一种有效的MatLab开源替代方案。

举一个画一元线性方程的简单例子:

python 复制代码
import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x,y)
plt.show()
python 复制代码
import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x,y,marker="o")
plt.show()
python 复制代码
from matplotlib import pyplot as plt
x=[5,8,10]
y=[12,16,6]
x2=[6,9,11]
y2=[6,15,7]
plt.bar(x,y,align='center')
plt.bar(x2,y2,color='g',align='center')
plt.title("bar graph")
plt.ylabel("Y axis")
plt.xlabel("X axis")
plt.show()
python 复制代码
from matplotlib import pyplot as plt
import numpy as np
a=np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27])
plt.hist(a,bins=[0,20,40,60,80,100])
plt.title("historgram")
plt.show()
python 复制代码
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,2*np.pi,400)
y=np.sin(x**2)
fig,ax=plt.subplots()
ax.plot(x,y)
ax.set_title("Simple plot")

f,(ax1,ax2)=plt.subplots(1,2,sharey=True)
ax1.plot(x,y)
ax1.set_title("sharing Y axis")
ax2.scatter(x,y)
fig,axs=plt.subplots(2,2,
subplot_kw=dict(projection="polar"))
axs[0,0].plot(x,y)
axs[1,1].scatter(x,y)
plt.show()
相关推荐
qcx235 分钟前
【系统学AI】25 论文导读 ①:两篇改变 AI 的开山之作——Attention Is All You Need & ReAct
前端·人工智能·react.js·transformer
Black蜡笔小新12 分钟前
自动化AI算法训练服务器DLTM制造业AI质检工作站助力制造业实现AI智检
人工智能·算法·自动化
川冰ICE16 分钟前
⑮ AI音乐与音频:工具详解与创作流程
人工智能·音视频
米小虾22 分钟前
2026 年多模态大模型全面爆发:从「看懂图」到「听懂世界」的技术跃迁
人工智能
米小虾27 分钟前
AI Agent 进入协议时代:MCP、A2A、AG-UI 三大协议全景解析
人工智能·agent
蝎子莱莱爱打怪28 分钟前
🚀 🚀🚀2026年5月GitHub月榜精选:17个项目中挑出10个推荐,实操4个!
人工智能·后端·ai编程
升鲜宝供应链及收银系统源代码服务37 分钟前
升鲜宝AI助手项目源码集成开发步骤(一)---升鲜宝生鲜配送供应链管理系统源代码服务
人工智能·生鲜配送系统·生鲜物流线路规划·生鲜电商订单系统·生鲜供应链系统·生鲜系统架构设计·生鲜配送ai功能集成
yjcode78940 分钟前
探索游戏充值新纪元:友价源码技术革新之旅
大数据·人工智能·游戏·游戏交易
冬奇Lab1 小时前
Agent 系列(11):A2A 协议——Agent 与 Agent 如何协作
人工智能·agent
snow@li1 小时前
AI:理解 大数据、算法、算力、电力、生成式AI、token 之间的关系
大数据·人工智能·算法