Python 为什么数组乘以常数会改变数组大小?

Python 为什么数组乘以常数会改变数组大小?,python,pandas,numpy,Python,Pandas,Numpy,我试图做一些非常基本的矩阵运算,但出于某种原因,即使是最基本的数组乘以常数的运算也会产生奇怪的结果。代码如下: a = [1,2,3] a*3 它返回的是: [1, 2, 3, 1, 2, 3, 1, 2, 3] 这对我来说毫无意义。为什么数组乘以常数会改变维数?列表就是这样定义的;您不是在做逐点乘法,而是在泛化列表串联 对于任何列表lst lst*0==[] 当n>0时,lst*n==lst+lst*n-1 其中+是列表连接。如果a和b是列表,则a+b是由a的所有元素组成的列表,后跟b的所

我试图做一些非常基本的矩阵运算,但出于某种原因,即使是最基本的数组乘以常数的运算也会产生奇怪的结果。代码如下:

a = [1,2,3]
a*3
它返回的是:

[1, 2, 3, 1, 2, 3, 1, 2, 3]
这对我来说毫无意义。为什么数组乘以常数会改变维数?

列表就是这样定义的;您不是在做逐点乘法,而是在泛化列表串联

对于任何列表lst

lst*0==[] 当n>0时,lst*n==lst+lst*n-1 其中+是列表连接。如果a和b是列表,则a+b是由a的所有元素组成的列表,后跟b的所有元素

如果您想要一个numpy数组,正如标记所暗示的那样,您必须创建一个

>>> from numpy import array
>>> array([1,2,3]) * 3
array([3, 6, 9])

请尝试以下代码:

a = np.array([1,2,3])
a * 3

请注意,python中没有数组,只有列表。一个列表可以有任何类型的数据,如字符串、数字、字典等。这就是为什么当您尝试用*3表示一个列表时,A=[1,2,3]意味着您希望将“A”列表串联三次

要使用阵列,必须按如下方式导入numpy:

将numpy作为np导入 a=np.数组[1,2,3]
a*3这不是一个数组;这是一张单子。好的,对不起,我弄糊涂了。有人能解释为什么[[1,2,3]]*3在这个数组中重复这个数组,给出[[1,2,3],[1,2,3],[1,2,3]?因为撇开引用语义不谈,它与[[1,2,3]+[[1,2,3]+[[1,2,3]]相同。考虑到引用语义,结果列表包含对单个列表[1,2,3]的3个引用,而不是对列表的3个不同副本的列表[1,2,3]。但是[[1,2,3]+[[1,2,3]+[[1,2,3]]肯定等于[[1,2,3]+[1,2,3]+[1,2,3]=[[3,6,9]]?