如何创建每个索引包含多个字段的numpy数组?

时间:2014-01-03 12:38:35

标签: python numpy

示例:

array[0] = [item1,item2]
array[1] = [item1,item2]
array[2] = [item1,item2]
array[3] = [item1,item2]

如何在python中创建这样的数组?

2 个答案:

答案 0 :(得分:1)

至少有两种看起来相似但实际上完全不同的方式:

第一种方法是创建一个二维数组:

import numpy as np

foo = np.array([[0,1],[2,3],[4,5],[6,7]])
# foo = np.arange(4*2).reshape(4,2)   # this does the same thing
print(foo[0])    # the first row of `foo`
# [0 1]

print(foo[1])    # the second row of `foo`
# [2 3]

第二种方法是创建一个dtype 'object'的一维数组,其中的对象是Python列表:

bar = np.empty(4, dtype='object')
bar[0] = [0,1]
bar[1] = [2,3]
bar[2] = [4,5]
bar[3] = [6,7]

print(bar[0])
# [0, 1]

print(bar[1])
# [2, 3]

请注意,在第一个示例中,foo[0]是NumPy数组。在第二个示例中,bar[0]是一个Python列表。

foo上进行的数值计算往往比在bar上进行的类似操作快得多。如果存储在Python列表中的项是数字和/或同类型(例如所有字符串),则使用更高维NumPy数组往往是比dtype object的NumPy数组更好的选择。 (特别是对于数值数据,不仅使用非对象dtypes的同类数组有速度优势,而且,一些NumPy函数不适用于object dtype的数组。)

答案 1 :(得分:0)

'item1'和'item2'是什么类型的?它们也是同一类型吗?请参阅下面的示例。

your_array = [[5,3], [3,6], [4, 9]] # you could do this
print(your_array[0]) # would print [5,3]