doppelherz7
doppelherz7

Reputation: 11

Inserting an array inside the list of arrays

I have an issue with numpy arrays and I can't understand what I am doing wrong. I need to create a 100x100 matrix with random int (non zero) and the last row should be the combination of all previous rows. Here is my code:

non_zero_m = np.random.randint(0,10,(99,100))
arr = non_zero_m.sum(axis=0)
singular_m = np.concatenate((non_zero_m, arr))

ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)

I can't understand why python shows that arrays has different dimensions

Upvotes: 0

Views: 141

Answers (1)

Nir H.
Nir H.

Reputation: 550

The problem is that arr is a 1-dimensional array, and you are trying to concatenate it to a matrix (2-dimensional).

Just replace the second line with:

arr = non_zero_m.sum(axis=0).reshape(1, -1)

This reshapes arr to a 2-dimensonal array, such that the first axis has dimension 1 (thus making arr effectively a row vector), and the second axis has the required dimension to keep all of arr's elements (this is the meaning of -1 in this context).

Upvotes: 1

Related Questions