【问题标题】:Assigning issue with numpy structured arraysnumpy 结构化数组的分配问题
【发布时间】:2011-09-27 20:49:17
【问题描述】:

我正在尝试在 numpy 中将代码分配给结构化数组的这一简单行,我不确定,但是当我将矩阵分配给我创建的结构化数组中的 sub_array 时会发生错误,如下所示:

new_type = np.dtype('a3,(2,2)u2')
x = np.zeros(5,dtype=new_type)
x[1]['f1'] = np.array([[1,1],[1,1]])
print x
Out[143]: 
array([('', [[0, 0], [0, 0]]), ('', [[1, 0], [0, 0]]),
   ('', [[0, 0], [0, 0]]), ('', [[0, 0], [0, 0]]),
   ('', [[0, 0], [0, 0]])], 
  dtype=[('f0', '|S3'), ('f1', '<u2', (2, 2))])

在这个阶段子数组的第二个字段不应该等于吗

[[1,1],[1,1]]

【问题讨论】:

  • 10 个问题 - 0 个接受的答案。只是说...

标签: arrays numpy structured-array


【解决方案1】:

我认为您希望设置稍有不同。试试:

x['f1'][1] = np.array([[1,1],[1,1]])

导致:

In [43]: x = np.zeros(5,dtype=new_type)

In [44]: x['f1'][1] = np.array([[1,1],[1,1]])

In [45]: x
Out[45]: 
array([('', [[0, 0], [0, 0]]), ('', [[1, 1], [1, 1]]),
       ('', [[0, 0], [0, 0]]), ('', [[0, 0], [0, 0]]),
       ('', [[0, 0], [0, 0]])], 
      dtype=[('f0', '|S3'), ('f1', '<u2', (2, 2))])

这并不是说这不是奇怪的行为,因为 x['f1'][1]x[1]['f1'] 打印的结果相同,但显然不同:

In [51]: x['f1'][1]
Out[51]: 
array([[1, 1],
       [1, 1]], dtype=uint16)

In [52]: x[1]['f1'] 
Out[52]: 
array([[1, 1],
       [1, 1]], dtype=uint16)

In [53]: x[1]['f1'] = 2

In [54]: x
Out[54]: 
array([('', [[0, 0], [0, 0]]), ('', [[2, 1], [1, 1]]),
       ('', [[0, 0], [0, 0]]), ('', [[0, 0], [0, 0]]),
       ('', [[0, 0], [0, 0]])], 
      dtype=[('f0', '|S3'), ('f1', '<u2', (2, 2))])

In [55]: x['f1'][1] = 3

In [56]: x
Out[56]: 
array([('', [[0, 0], [0, 0]]), ('', [[3, 3], [3, 3]]),
       ('', [[0, 0], [0, 0]]), ('', [[0, 0], [0, 0]]),
       ('', [[0, 0], [0, 0]])], 
      dtype=[('f0', '|S3'), ('f1', '<u2', (2, 2))])

我必须多考虑一下才能弄清楚到底发生了什么。

【讨论】:

  • 感谢您的回复,我不会单独想到这一点,是的,正如您所说,这似乎是一种奇怪的行为。
  • @JustInTime - 请接受这个答案(以及其他问题的答案)。
  • 我刚刚遇到了这个问题,也发现了这个解决方法。基本问题似乎是一种方式会导致副本,另一种方式会导致视图。但是,除了尝试之外,我不清楚您应该如何知道。我在这里找到了更多信息:stackoverflow.com/questions/3058602/…
猜你喜欢
  • 2019-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 2012-08-12
相关资源
最近更新 更多