原文来自http://www.jianshu.com/p/d5bc50d8e0a2,摘录自己不熟悉的部分记下来以便日后查阅。因为是为了自己看而写的,故基本是提纲性质,非常简略,大家有疑惑的话请在评论区指出,我会尽力回答。
感谢原作者的无私贡献!(づ ̄3 ̄)づ╭❤~
让我们用下面这幅图来说明背后的逻辑。Python使用对象模型来存储数据,任何类型的值都是一个对象,所有对象都具备三个特性:身份(ID)、值(value)、类型(type)。这里的列表自然也是对象,x、y、z这类列表名称是ID,它们所指向的内容才是value。所以当使用y = x
时,只是将ID进行传递,它们所指向的值是同一个。但是使用 z = list(x)
,则是创建了一个新的对象z。
列表元素可以是任何类型,但是 Numpy 数组元素必须是相同类型。下面的例子说明,如果使用了不同的数据类型,则会被强制转化成同一种。
np.array([1.0, "is", True])
array(['1.0', 'is', 'True'], dtype='
+
在列表和 Numpy 数组中的作用也是不一样的。在列表中,加号实现列表的拼接;而在 Numpy 数组中,加号则是进行对应元素的加法运算。