Python Numpy中括号和括号的区别是什么?

Python Numpy中括号和括号的区别是什么?,python,python-3.x,numpy,Python,Python 3.x,Numpy,有人能解释一下Numpy中和[]操作的区别吗 例如,我运行了以下代码: import numpy as np x1 = np.array(([2, 9], [1, 5], [3, 6]), dtype=float) print(x1) print(type(x1)) x2 = np.array([[2, 9], [1, 5], [3, 6]], dtype=float) print(x2) print(type(x2)) y1 = np.array(([2, 9]), dtype=float

有人能解释一下Numpy中和[]操作的区别吗

例如,我运行了以下代码:

import numpy as np

x1 = np.array(([2, 9], [1, 5], [3, 6]), dtype=float)
print(x1)
print(type(x1))
x2 = np.array([[2, 9], [1, 5], [3, 6]], dtype=float)
print(x2)
print(type(x2))

y1 = np.array(([2, 9]), dtype=float)
print(y1)
print(type(y1))

y2 = np.array([[2, 9]], dtype=float)
print(y2)
print(type(y2))
x1和x2具有相同的数据和类型,但y1和y2不同。 我认为y1和y2应该是相同的。有人能解释为什么y1和y2不同吗?

阵列y1和y2有不同的形状。第一个是一维的,第二个是二维的。[2,9]周围的括号没有意义,因为里面只有一个元素和逗号。请参见下文和第一条评论

y1 = np.array(([2, 9]), dtype=float)
y1.shape  # (2,)
y2 = np.array([[2, 9]], dtype=float)
y2.shape  # (1, 2)
关于括号:

a = (3)
type(a)  # int
b = (3, )
type(b)  # tuple
c = (3, 4)
type(c)  # tuple

事实上,这与Numpy无关

这:

是由3个列表组成的元组

这:

是一个包含3个列表的列表

由于元组和列表都是有序序列,numpy对它们的处理是相同的

现在:

([2, 9])
实际上是一个由两个整数组成的列表-表达式的parens唯一强制求值顺序-所以numpy得到的是

[2, 9] 
而这:

[[2, 9]]
是一个由两个整数组成的列表。当然,努比不会对他们一视同仁,因为他们真的不同

这里的要点是,组成元组的不是parens,而是coma,因此第一个示例:

([2, 9], [1, 5], [3, 6])
事实上:

[2, 9], [1, 5], [3, 6]
TL;博士:

对于第三个示例,您需要:

([2, 9],)
不是


这个额外的括号没有任何变化。它实际上是[2,9]

您还可以查看另一个示例:

np.random.randn((((((((((((((((((((((1))))))))))))))))))))))
它实际上是:

np.random.randn(1)
这不是Numpy的专长。只要包含单个表达式,几乎可以在任何地方添加附加括号


相反,如果Python在括号或空括号内找到任何逗号分隔的值,它将尝试转换为tuple对象。

据我理解,输入tuple是在np中的。例如,数组也称为列表

a=np.零3,3

数组[[0,0,0.], [0., 0., 0.], [0,0,0.]]

就像我们在np.array中为zero的初始化输入一个列表一样

a=np.零[3,3]

数组[[0,0,0.], [0., 0., 0.], [0,0,0.]]

但是,如果在简单python中使用相同的模式进行初始化,则会将它们分别计算为tuple和list

a=[2,6],[4,5]

[2,6],[4,5]

类“tuple”

b=[[2,6],[4,5]]

B型

类“列表”


[]实例化一个列表。实例化一个元组。阅读这些文档应该会有所帮助。y1=np.array[2,9],dtype=float相当于y1=np.array[2,9],dtype=float-平面结构。换句话说,它是一个用括号括起来的列表。在较长的情况下,x1=np.array[2,9],[1,5],[3,6],dtype=float是一个嵌套结构列表的元组,因为括号中现在包含多个由逗号分隔的项。这是Python的标准,而不是Numpy@DavidCulbreth:不,括号不构成元组,它们始终只是一个分组结构。逗号运算符构造一个元组。所以u不是一个元组,不管u是什么,但是u是一个元组,甚至u是一个元组。很有趣。谢谢谢谢现在,我明白了。元组是由而不是由构造的。很有意思。你对括号的编辑是错误的。b=3,也是一个元组,没有括号。
([2, 9])
np.random.randn((((((((((((((((((((((1))))))))))))))))))))))
np.random.randn(1)