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 自己定义的字符串类型,但并不重要,重要的是,他们的类型是一致的,只是做了“隐式”转换而已。)

//img.mukewang.com/szimg/62a1fabc095390a211960154.jpg


这类隐式转换本意是为了给开发者提供方便,但在实践中,很容易产生不易察觉地 bug(比如你以为此时的 array 中后两个元素还是 int,但实际却是 string,后续产生一系列问题,甚至没有报错表现出来。这就是动态语言难调试的一个重要原因。)


所以我的建议是:

1)了解 numpy 的 array 中的元素类型是一致的;

2)在实际编程中,对 numpy 中的 array,在赋值时,就赋予同样类型的数据(而不依赖这种隐式的类型转换)。


继续加油!:)


0
0

结合编程学数学 专为程序员设计的线性代数

创新设计,通俗易懂。编程结合数学,bobo带你彻底征服线性代数

3404 学习 · 375 问题

查看课程