Python中二维数组的列表列表

Posted

技术标签:

【中文标题】Python中二维数组的列表列表【英文标题】:List of Lists to 2D Array in Python 【发布时间】:2015-05-22 20:16:06 【问题描述】:

我在 Python 中有一个列表列表,其中包含混合值,有些是字符串,有些是元组。

data = [[0,1,2],["a", "b", "c"]]

我想知道是否有一种方法可以在不使用 Numpy 的情况下轻松地将任何长度的列表转换为二维数组。我正在使用 System.Array,因为这是所需的格式。 我知道我可以创建一个 Array 的新实例,然后使用 for 循环将列表中的所有数据写入其中。我只是好奇是否有一种很好的 Pythonic 方式来做到这一点。

x = len(data)
y = len(data[0])
arr = Array.CreateInstance(object, x, y)

然后我可以遍历我的数据并正确设置 arr 值?

arr = Array.CreateInstance(object, x, y)
for i in range(0, len(data),1):
    for j in range(0,len(data[0]), 1):
        arr.SetValue(data[i][j], i,j)

如果可能的话,我想避免这样的循环。谢谢,

附言。这适用于 Excel 互操作,我可以通过将其设置为等于数组来在 Excel 中设置整个范围。这就是我想将列表转换为数组的原因。谢谢,

我想知道的是 Array 是一个类型化的对象,是否可以将其组成部分设置为字符串或整数?我想我可能只限于一个。正确的?如果是这样,我可以使用任何其他类型的数据吗? 将其设置为 Arrayobject 是否可以确保我可以在其中组合 str/int?

虽然我也可以使用这个:

arr= Array[Array[object]](map(object, data))

但它会引发错误。有任何想法吗?

【问题讨论】:

您需要使用Array.CreateInstance 创建二维数组,并且它们必须是单一类型。 【参考方案1】:

您可以使用Array.CreateInstance 创建单维或多维数组。由于 Array.CreateInstance 方法采用“类型”,因此您可以指定所需的任何类型。例如:

// gives you an array of string
myArrayOfString = Array.CreateInstance(String, 3)

// gives you an array of integer
myArrayOfInteger = Array.CreateInstance(Int32, 3)

// gives you a multidimensional array of strings and integer
myArrayOfStringAndInteger = [myArrayOfString, myArrayOfInteger]

希望这会有所帮助。有关如何使用 Array.CreateInstance 的示例,另请参阅 msdn 网站。

【讨论】:

以上是关于Python中二维数组的列表列表的主要内容,如果未能解决你的问题,请参考以下文章

Python numpy 保留已排序二维数组的索引列表

python如何二删除二维或者三维数组/列表中某维的空元素

python大神你好,请问二维列表参照一维列表排序的问题。

python 二维数组赋值问题

Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组split函数垂直拆分二维numpy数组

python如何定义二维结构体数组?