python中(1,2,3)与[1,2,3]之间有什么区别?

时间:2018-01-16 04:30:23

标签: python numpy

在下面的代码中,尺寸和尺寸的形状randm是一样的,一维数组(3,) 那么为什么尺寸=(3,3,2)& randm = [ - 1.10343097 -1.31819984 0.20597956]

Q.1为什么不同的括号()vs [] Q.2每个支架的重要性()& []

 image = np.array([[[ 0.67826139,  0.29380381],
        [ 0.90714982,  0.52835647],
        [ 0.4215251 ,  0.45017551]],

       [[ 0.92814219,  0.96677647],
        [ 0.85304703,  0.52351845],
        [ 0.19981397,  0.27417313]],

       [[ 0.60659855,  0.00533165],
        [ 0.10820313,  0.49978937],
        [ 0.34144279,  0.94630077]]])

size = np.shape(image)
print (str (size))
print (np.shape(size))

randm = np.random.randn(3)
print (randm)
print (np.shape(randm)) 

输出 -

(3, 3, 2)
(3,)
[-1.10343097 -1.31819984  0.20597956]
(3,)

3 个答案:

答案 0 :(得分:1)

image是一个多维numpy数组。它通过嵌套的列表列表(括号和逗号)定义。

image.shape是一个元组,因此显示为()。

其他答案和所谓的重复,都集中在Python对列表和元组之间的区别。但这需要一个专注的答案。

一个简单的3d数组:

In [244]: x = np.array([[[1,2],[3,4]]])
In [245]: x
Out[245]: 
array([[[1, 2],
        [3, 4]]])

您可以将形状作为属性或通过函数调用

获取
In [246]: x.shape
Out[246]: (1, 2, 2)
In [247]: np.shape(x)
Out[247]: (1, 2, 2)

但是shape本身没有形状属性。 len(x.shape)会起作用,因为它是一个元组。

In [248]: (x.shape).shape
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-248-b00338a7f4bf> in <module>()
----> 1 (x.shape).shape

AttributeError: 'tuple' object has no attribute 'shape'

np.shape(...shape)令人困惑。 np.shape()首先将其输入转换为数组(如果它还没有)并返回其形状:

In [249]: np.shape(x.shape)
Out[249]: (3,)

所以我通常不会采用这种形状。然而,它确实证明了一个关键点。 (3,)是1元素元组。 ,很重要。 0d数组的形状元组是()

下一部分制作一个3元素数组

In [250]: np.random.randn(3)
Out[250]: array([ 2.06265058,  0.87906775, -0.96525837])
In [251]: _.shape
Out[251]: (3,)
In [252]: print(__)
[ 2.06265058  0.87906775 -0.96525837]

再次,(3,)形状元组。数组的str显示使用括号,但省略逗号。这有助于将其与常规列表区分开来。

(还有一个数组类型显示为(),一个结构化数组。但这是一个更高级的主题。)

答案 1 :(得分:0)

()表示法表示数据类型为tuple,而[]表示list

此外,元组使用更少的内存,并且在列表可变时是不可变的。

答案 2 :(得分:0)

(1,2,3) -Tuple
[1,2,3] -List

阅读本文以获取有关tuple and list

的更多信息