简体   繁体   中英

Matrix element repetition bug

I'm trying to create a matrix that reads:

[0,1,2]
[3,4,5]
[6,7,8]

However, my elements keep repeating. How do I fix this?

import numpy as np

n = 3
X = np.empty(shape=[0, n])

for i in range(3):
    for j  in range(1,4):
        for k  in range(1,7):
            X = np.append(X, [[(3*i) , ((3*j)-2), ((3*k)-1)]], axis=0)

print(X)

Results:

[[ 0.  1.  2.]
 [ 0.  1.  5.]
 [ 0.  1.  8.]
 [ 0.  1. 11.]
 [ 0.  1. 14.]
 [ 0.  1. 17.]
 [ 0.  4.  2.]
 [ 0.  4.  5.]
 

I'm not really sure how you think your code was supposed to work. You are appending a row in X at each loop, so 3 * 3 * 7 times, so you end up with a matrix of 54 x 3.

I think maybe you meant to do:

for i in range(3):
  X = np.append(X, [[3*i , 3*i+1, 3*i+2]], axis=0)

Just so you know, appending array is usually discouraged (just create a list of list, then make it a numpy array).

You could also do

>> np.arange(9).reshape((3,3))
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM