Reputation: 311
I am using Python/NumPy, and I have two arrays like the following:
array1 = [1 2 3]
array2 = [4 5 6]
And I would like to create a new array:
array3 = [[1 2 3], [4 5 6]]
and append items to it. So for example if the new items to append are:
array4 = [7 8 9]
array5 = [10 11 12]
Then now array3 would be an array with two rows and two columns like the one shown below:
array3= [[1 2 3], [4 5 6]
[7 8 9], [10 11 12]]
I seem to have problems because the elements of my arrays are not separated by commas.
Upvotes: 23
Views: 272571
Reputation: 1
Just use commas. and an easy way to add them to your list is by selecting the array and Ctrl+f to replace spaces by commas. (if contains string replace " "
by ","
).
Upvotes: 0
Reputation: 10840
It seems strange that you would write arrays without commas (is that a MATLAB syntax?)
Have you tried going through NumPy's documentation on multi-dimensional arrays?
It seems NumPy has a "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]])
It has also been answered already...
From the documentation for MATLAB users:
You could use a matrix constructor which takes a string in the form of a matrix MATLAB literal:
mat("1 2 3; 4 5 6")
or
matrix("[1 2 3; 4 5 6]")
Please give it a try and tell me how it goes.
Upvotes: 15
Reputation: 11
a=np.array([[1,2,3],[4,5,6]])
a.tolist()
tolist
method mentioned above will return the nested Python list.
Upvotes: -1
Reputation: 382
You'll have problems creating lists without commas. It shouldn't be too hard to transform your data so that it uses commas as separating character.
Once you have commas in there, it's a relatively simple list creation operations:
array1 = [1,2,3]
array2 = [4,5,6]
array3 = [array1, array2]
array4 = [7,8,9]
array5 = [10,11,12]
array3 = [array3, [array4, array5]]
When testing we get:
print(array3)
[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]
And if we test with indexing it works correctly reading the matrix as made up of 2 rows and 2 columns:
array3[0][1]
[4, 5, 6]
array3[1][1]
[10, 11, 12]
Hope that helps.
Upvotes: 4
Reputation: 2807
If the file is only numerical values separated by tabs, try using the csv library: http://docs.python.org/library/csv.html (you can set the delimiter to '\t')
If you have a textual file in which every line represents a row in a matrix and has integers separated by spaces\tabs, wrapped by a 'arrayname = [...]' syntax, you should do something like:
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))
Upvotes: 3