0

针对以下问题,我提供了额外的说明......

我有一个数组数组,一列 81 个子数组(81 行)。我认为这等同于形状 (81, 1)。每个子数组是一个有 8 个元素的数组(1 行 8 个元素)。我相信这等同于 (1, 8) 的形状。我使用 .append 函数创建了这个数组数组:

row = (["str1", "str2", "str3", "str4", "str5", "str6", "str7", "str8"])
if ((row[clm_number] == best_one_value_predictor_list[1]):           
        one_predictor_exception_array.append(row)

要访问子数组中的元素,我使用了以下代码:

anchor_column_array = one_predictor_exception_array[:][0]

代替

anchor_column_array = one_predictor_exception_array[:,anchor_column_index]

我的目标是创建一个形状数组 (81, 8),这样我就不再有子数组了。我意识到将数组附加到数组会产生这种情况,但我想获得一个更简单的数据结构。以前,我吸入了一个 csv 文件,它是 (81,8)

io.read_csv_into_array("train.C.csv")

我正在寻找的答案类型是a)一种将数据行附加到数组而不创建数组(或列表)数组的方法,或者b)一种将数组数组重塑为简单的单一数组的方法大批。我希望最终形状为 (X, Y) 并且我可以使用 [:,index] 访问它

每个子数组的前两个元素是唯一的,所以我可以混合所有数组。我需要它们像 (81, 8) 电子表格一样堆叠。

4

3 回答 3

1

您没有说要在数组中存储什么或要对数据做什么。如果您想存储数字、进行数学运算并将数组索引为 x[:,i] (如您所指),那么您可能正在寻找标准库中不存在的numpy 。

>>> import numpy
>>> mylist = [[1, 2, 3],
              [4, 5, 6]]
>>> myarray = numpy.array(mylist)
>>> myarray[:,0]
numpy.array([1,4])

即使您的兴趣不仅仅是数字,numpy 数组也可以存储任何 python 内置类型,包括 object。

>>> a = numpy.array([['a', 'b', 'c'],
                     ['d', 'e', 'f']])
array([['a', 'b', 'c'],
       ['d', 'e', 'f'], dtype='|S1')

数组元素的类型由数组的 numpy dtype属性指示。您甚至可以拥有混合内置类型的“复合”类型。

>>> a = numpy.array([[('a', 1), ('b', 2), ('c', 3)],
                     [('d', 4), ('e', 5), ('f', 6)]],
                     dtype='S1, i4')
于 2013-09-17T15:20:11.633 回答
0

你可以extend数组:

a = [1, 2, 3, 4]
a.extend([5, 6, 7, 8])

extend假设参数是一个可迭代的,并且append它的每个元素都指向源数组。

于 2013-09-17T14:52:49.240 回答
0

我的问题是我实际上是将一个列表附加到另一个列表而不是一个数组到一个数组中。我将列表列表转换为数组,我的问题就解决了。

初学者问题

于 2013-09-19T14:49:23.637 回答