【问题标题】:3D Array in Python with mutliple data typesPython中具有多种数据类型的3D数组
【发布时间】:2013-08-04 15:33:23
【问题描述】:

我需要在 numpy 中创建一个具有多种数据类型的 3D 数组。

arr[int][str][int] 

我尝试过将np.newaxisrec.array 结合使用。

编辑: 我打算让第一列是文本或字符串。 然后第二列保存整数值。

然后,它跨越多个表格,成为一个 3D 数组。

就像这张图片一样,每张桌子只有两列。 第一个保存字符串,第二个保存整数值

【问题讨论】:

  • 等等,这是怎么工作的?您是否使用 int、str 和 int 对数组进行索引?为什么字典不适合你?
  • 如果您描述了您要存储的数据类型以及您打算如何处理它,这可能对其他人有所帮助。
  • 对不起,这些是发生的数据类型。所以在数组中第一列是一个字符串,第二列是一个int。这些跨度跨越多个“表”作为 3D 数组。
  • 您可以使用记录数组,正如回答的那样,但我经常发现保留单独的对齐数组更方便,即一个字符串,另一个整数,形状相同且对应的值存储在相同的位置。

标签: python arrays python-2.7 numpy


【解决方案1】:

您可以创建一个np.recarray,如下所示:

a = np.recarray(4,dtype=[('col1',int),('col2','|S10'),('col3',int)])
a['col1'] = range(4)
a['col2'] = ['a', 'b', 'c', 'd']
a['col3'] = range(11,15)

print a
# [(0, 'a', 11) (1, 'b', 12) (2, 'c', 13) (3, 'd', 14)]

如果您想使用2D 数组,请使用dtype=object

a = np.array([[0,1,2,3],['a','b','c','d'],[11,12,13,14]], dtype=object)

print a
#[[0 1 2 3]
# ['a' 'b' 'c' 'd']
# [11 12 13 14]]

【讨论】:

  • 谢谢,我将 a = a[:,np.newaxis] 添加到解决它的结束行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 2017-10-12
  • 1970-01-01
  • 2022-11-28
相关资源
最近更新 更多