我正在使用 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]]
我似乎有问题,因为我的数组的元素没有用逗号分隔。
编写不带逗号的数组似乎很奇怪(这是 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]")
请尝试一下并告诉我效果如何。
创建不带逗号的列表时会遇到问题。转换数据以使用逗号作为分隔符应该不会太难。
一旦其中包含逗号,这是一个相对简单的列表创建操作:
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]
希望有帮助。
如果文件只是用制表符分隔的数值,请尝试使用 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))
只需使用逗号即可。将它们添加到列表中的一个简单方法是选择数组并按 Ctrl + f 将空格替换为凸轮。 (如果包含字符串,请将 " "
替换为
","
)
a=np.array([[1,2,3],[4,5,6]])
a.tolist()
上面提到的
tolist
方法将返回嵌套的Python列表。