vec = np.array(["Linear Algebra",2,3]) numpy所有的数据都是同一种类型,为啥这样不报错
来源:3-7 Numpy 中向量的基本使用
大胆0220
2022-06-09
写回答
1回答
-
liuyubobobo
2022-06-09
尝试一下把这个 vec 打印出来?你会发现,后面的数字 2 和 3 被转成了字符串。他们的类型是 <U21。(<U21 是 numpy 自己定义的字符串类型,但并不重要,重要的是,他们的类型是一致的,只是做了“隐式”转换而已。)
这类隐式转换本意是为了给开发者提供方便,但在实践中,很容易产生不易察觉地 bug(比如你以为此时的 array 中后两个元素还是 int,但实际却是 string,后续产生一系列问题,甚至没有报错表现出来。这就是动态语言难调试的一个重要原因。)
所以我的建议是:
1)了解 numpy 的 array 中的元素类型是一致的;
2)在实际编程中,对 numpy 中的 array,在赋值时,就赋予同样类型的数据(而不依赖这种隐式的类型转换)。
继续加油!:)
00
相似问题