【问题标题】:Why do these two arrays have the same shape?为什么这两个数组具有相同的形状?
【发布时间】:2015-09-30 05:27:27
【问题描述】:

所以我试图创建一个数组,然后按名称访问列。所以我想出了这样的东西:

import numpy as np
data = np.ndarray(shape=(3,1000),
                  dtype=[('x',np.float64),
                  ('y',np.float64),
                  ('z',np.float64)])

我不知道为什么

data.shape 

data['x'].shape

两者都返回 (3,1000),当我尝试填充我的数据字段时,这会导致我出现问题

data['x'] = xvalues

xvalues 的形状为 (1000,)。有没有更好的方法来做到这一点?

【问题讨论】:

  • 您将dtype 定义的“列”与常规二维数组的列混淆了。

标签: python numpy scipy


【解决方案1】:

之所以如此,是因为“数据”的结构比形状所揭示的结构要多一些。

例子:

data[0][0] returns: (6.9182540632428e-310, 6.9182540633353e-310, 6.9182540633851e-310)

data['x'][0][0]: 返回 6.9182540632427993e-310

所以数据包含 3 行 1000 列,其元素是一个 3 元组。

data['x'] 是 3 行 1000 列所有组合的元组的第一个元素,因此形状也是 (3,1000)。

【讨论】:

    【解决方案2】:

    只需设置shape=(1000,)。 Triple dtype 将创建 3 列。

    【讨论】:

      猜你喜欢
      • 2023-01-10
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多