数组的数组 (Python/NumPy)

问题描述 投票:0回答:5

我正在使用 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]]

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

python arrays numpy
5个回答
15
投票

编写不带逗号的数组似乎很奇怪(这是 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")

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

请尝试一下并告诉我效果如何。


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]

希望有帮助。


3
投票

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

如果您有一个文本文件,其中每一行代表矩阵中的一行,并且具有由空格abs分隔的整数,并由“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))

0
投票

只需使用逗号即可。将它们添加到列表中的一个简单方法是选择数组并按 Ctrl + f 将空格替换为凸轮。 (如果包含字符串,请将 " "

 替换为 
","


-1
投票
a=np.array([[1,2,3],[4,5,6]]) a.tolist()
上面提到的

tolist

方法将返回嵌套的Python列表。

© www.soinside.com 2019 - 2024. All rights reserved.