这两个 numpy 对象有什么区别?
import numpy as np
np.array([[0,0,0,0]])
np.array([0,0,0,0])
原文由 Char 发布,翻译遵循 CC BY-SA 4.0 许可协议
这两个 numpy 对象有什么区别?
import numpy as np
np.array([[0,0,0,0]])
np.array([0,0,0,0])
原文由 Char 发布,翻译遵循 CC BY-SA 4.0 许可协议
单括号和双括号的区别从列表开始:
In [91]: ll=[0,1,2]
In [92]: ll1=[[0,1,2]]
In [93]: len(ll)
Out[93]: 3
In [94]: len(ll1)
Out[94]: 1
In [95]: len(ll1[0])
Out[95]: 3
ll
是一个包含 3 个项目的列表。 ll1
是 1 项的列表;该项目是另一个列表。请记住,一个列表可以包含各种不同的对象、数字、字符串、其他列表等。
您的 2 个表达式有效地从两个这样的列表中创建数组
In [96]: np.array(ll)
Out[96]: array([0, 1, 2])
In [97]: _.shape
Out[97]: (3,)
In [98]: np.array(ll1)
Out[98]: array([[0, 1, 2]])
In [99]: _.shape
Out[99]: (1, 3)
这里列表的列表已经变成了一个二维数组。以一种微妙的方式 numpy
模糊了列表和嵌套列表之间的区别,因为这两个数组之间的区别在于它们的形状,而不是基本结构。 array(ll)[None,:]
produces the (1,3)
version, while array(ll1).ravel()
produces a (3,)
version.
单括号和双括号的最终结果是数组维数的不同,但我们不应该忽视 Python 首先创建不同列表的事实。
原文由 hpaulj 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答888 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
前者是一个 1 x 4 的二维数组,后者是一个 4 元素的一维数组。