【问题标题】:Is there a reason why numpy arrays lose a dimension if the input is a tuple? [duplicate]如果输入是元组,numpy 数组是否会丢失维度? [复制]
【发布时间】:2020-10-24 02:56:06
【问题描述】:

我首选的手动定义 numpy 数组的方法是在 numpy 的 user guide 中看到它之后输入一个元组列表。它使跟踪括号更容易:

但是进一步搜索文档我不知道这是否被认为是标准,或者是否有特定的用例。总的来说,它们的工作方式似乎与输入列表列表的方式完全相同,除非尝试显式定义二维数组。它自动变成一维数组,而使用相同语法的列表列表变成二维数组。

在下面的代码中,我希望a2b1 具有相同的形状。它们不同有什么原因吗?

a1 = np.array([1, 1])
print(a1.shape) # (2,)

a2 = np.array([[1], [1]])
print(a2.shape) # (2, 1)

b1 = np.array([(1), (1)])
print(b1.shape) # (2,)

b2 = np.array(((1, 2), (1, -5)))
print(b2.shape) # (2, 2)

【问题讨论】:

  • (some_object) 只是写some_object 的另一种方式。 (some_object,) 是一个长度为 1 的元组。

标签: python arrays numpy


【解决方案1】:

在 python 中,一个单元素元组实际上是requires a comma,而不仅仅是括号。没有逗号,(1) == 1。要获得所需的输出,您需要:

b1 = np.array([(1,), (1,)])
b1.shape
# (2, 1)

【讨论】:

    猜你喜欢
    • 2015-07-29
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    相关资源
    最近更新 更多