数组数组(Python/NumPy)

2024-09-28 20:51:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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


Tags: 项目numpy元素数组逗号array1array2array3
3条回答

写数组时不使用逗号(这是一个MATLAB syntax吗?)

你试过通过NumPy's documentation on multi-dimensional arrays吗?

似乎努比有一个"Python-like" append method to add items to a NumPy n-dimensional array

>>> 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]])

它还有been answered already。。。

documentation for MATLAB users

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

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

or

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

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

创建没有逗号的列表时会遇到问题。转换数据以使用逗号作为分隔字符应该不太难。

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

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]]]

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

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

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

希望能有所帮助。

如果文件只是由制表符分隔的数值,请尝试使用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))

相关问题 更多 >