22

我正在使用 Python/NumPy,并且我有两个数组,如下所示:

array1 = [1 2 3]
array2 = [4 5 6]

我想创建一个新数组:

array3 = [[1 2 3], [4 5 6]]

并将项目附加到它。例如,如果要附加的新项目是:

array4 = [7 8 9]
array5 = [10 11 12]

那么现在 array3 将是一个包含两行两列的数组,如下所示:

array3= [[1 2 3], [4 5 6]
         [7 8 9], [10 11 12]]

我似乎有问题,因为我的数组元素没有用逗号分隔。

4

4 回答 4

11

您编写不带逗号的数组似乎很奇怪(这是MATLAB 语法吗?)

您是否尝试过阅读NumPy 关于多维数组的文档

似乎 NumPy 有一个“类似 Python”的附加方法来将项目添加到 NumPy n 维数组

>>> p = np.array([[1,2],[3,4]])

>>> p = np.append(p, [[5,6]], 0)

>>> p = np.append(p, [[7],[8],[9]],1)

>>> p
array([[1, 2, 7], [3, 4, 8], [5, 6, 9]])

它也已经回答了......

MATLAB 用户的文档中

您可以使用矩阵构造函数,它采用矩阵 MATLAB 文字形式的字符串:

mat("1 2 3; 4 5 6")

or

matrix("[1 2 3; 4 5 6]")

请试一试,告诉我进展如何。

于 2012-08-18T18:12:31.197 回答
4

在创建不带逗号的列表时会遇到问题。转换数据应该不会太难,以便它使用逗号作为分隔符。

一旦你有逗号,这是一个相对简单的列表创建操作:

array1 = [1,2,3]
array2 = [4,5,6]

array3 = [array1, array2]

array4 = [7,8,9]
array5 = [10,11,12]

array3 = [array3, [array4, array5]]

测试时我们得到:

print(array3)

[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]

如果我们使用索引进行测试,它可以正确读取由 2 行和 2 列组成的矩阵:

array3[0][1]
[4, 5, 6]

array3[1][1]
[10, 11, 12]

希望有帮助。

于 2015-06-08T15:50:27.193 回答
2

如果文件只是由制表符分隔的数值,请尝试使用 csv 库: http ://docs.python.org/library/csv.html (您可以将分隔符设置为 '\t')

如果您有一个文本文件,其中每一行代表矩阵中的一行,并且整数由空格\制表符分隔,并由 'arrayname = [...]' 语法包裹,您应该执行以下操作:

import re
f = open("your-filename", 'rb')
result_matrix = []
for line in f.readlines():
    match = re.match(r'\s*\w+\s+\=\s+\[(.*?)\]\s*', line)
    if match is None:
        pass # line syntax is wrong - ignore the line
    values_as_strings = match.group(1).split()
    result_matrix.append(map(int, values_as_strings))
于 2012-08-19T08:31:42.090 回答
-2

a=np.array([[1,2,3],[4,5,6]])

a.tolist()

上面提到的 tolist 方法将返回嵌套的 Python 列表

于 2017-11-28T03:22:13.323 回答