First, I tried to find an answer to my question ( which I think is pretty basic) searching in google and in the site, but nothing came up.
I'm trying to get the rows from a numpy matrix, but I can't. For example if I use this:
result = numpy.matrix([[11, 12, 13],
[21, 22, 23],
[31, 32, 33]])
for p in result:
print(p[0])
prints this:
[[11 12 13]]
[[21 22 23]]
[[31 32 33]]
The same if I use just p
What I have to do to access every row? numpy.nditer(result) prints an array, and I need every row to perform some operations.
解决方案
The problem is you are using np.matrix. Use np.array instead and simply iterate without indexing:
result = np.array([[11, 12, 13],
[21, 22, 23],
[31, 32, 33]])
for p in result:
print(p)
[11 12 13]
[21 22 23]
[31 32 33]
Explanation
What you are seeing is the effect of numpy.matrix requiring each row to have 2 dimensions. This is unnecessary and anti-pattern for NumPy.
There is a history behind numpy.matrix. It was used initial for convenience of matrix multiplication operators. But this is no longer an issue since @ is possible (Python 3.5+) instead of nested dot calls. Therefore, by default, use numpy.array.