PYTHON-numpy.array的大坑 、numpy中的数据类型
1.大坑介绍:
一定要在生成数组(array)时候声明数组所存储变量的变量类型;不然,真的,这个错误几天都找不出来!太隐蔽了!
官网已经给你悄悄暗示了些什么:
总的来说就是自己基础知识不扎实导致的,忽视了一点就是:
python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同。在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,'a']需要4个指针和四个数据,增加了存储和消耗cpu。
2.大坑代码:
>>> a = [0,3,2] >>> b = [0,8,2] >>> c = np.array(list(zip(a,b))) >>> c = np.mean([[0,0],[1,1]]) >>> c 0.5 >>> c = np.mean([[0,0],[1,1]],axis = 0) >>> c array([0.5, 0.5]) #看到这的小伙伴,没问题啊?怎么回事,小老弟! #下面可要看仔细了 >>> c = np.array(list(zip(a,b))) >>> c[0] = np.mean([[0,0],[1,1]],axis = 0) >>> c[0] array([0, 0]) #咋回事呢?求个列方向的平均值怎么成0了,不应该是array[0.5,0.5]么
问题就在这,我之前在“灰色行”给c赋予了一个数组的属性,其开始存储的是
array([[0, 0],
[3, 8],
[2, 2]])
这样一个数据,由于其中元素都是int的,所以系统就认为你要的这个数组就是int的,但是最后呢?你要其存储float类型的,作为系统的“好心”,肯定给你转换为int。却恰恰是这个“好心”导致程序出错。
方法:加入数据类型
>>> c = np.array(list(zip(a,b)),dtype = np.float32) >>> c[0] = np.mean([[0,0],[1,1]],axis = 0) >>> c[0] array([0.5, 0.5], dtype=float32)#这样就对了嘛!
3.numpy中的数据类型:
数据类型
|
描述
|
bool_
|
布尔(True或False),存储为一个字节
|
int_
|
默认整数类型(与Clong相同;通常是int64或int32)
|
INTC
|
与Cint(通常为int32或int64)相同
|
INTP
|
用于索引的整数(与Cssize_t相同;通常是int32或int64)
|
INT8
|
字节(-128至127)
|
INT16
|
整数(-32768至32767)
|
INT32
|
整数(-2147483648至2147483647)
|
Int64的
|
整数(-9223372036854775808至9223372036854775807)
|
UINT8
|
无符号整数(0到255)
|
UINT16
|
无符号整数(0到65535)
|
UINT32
|
无符号整数(0到4294967295)
|
UINT64
|
无符号整数(0到18446744073709551615)
|
float_
|
float64的简写。
|
float16
|
半精度浮点:符号位,5位指数,10位尾数
|
FLOAT32
|
单精度浮点数:符号位,8位指数,23位尾数
|
float64
|
双精度浮点:符号位,11位指数,52位尾数
|
complex_
|
complex128的简写。
|
complex64
|
复数,由两个32位浮点数(实部和虚部)
|
complex128
|
复数,由两个64位浮点数(实部和虚部)
|
4.参考:
https://www.numpy.org.cn/(官网链接)
https://www.cnblogs.com/hackpig/p/8183470.html(list与array的区别)
https://www.cnblogs.com/chenhuabin/p/11412818.html(numpy中的数据类型) <-------------------------强烈推荐学矩阵的小伙伴们看看
分类:
PYTHON学习
标签:
PYTHON-numpy库
, PYTHON错误
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架