1. 程式人生 > >np.r_, np.c_ ,np.meshgrid; list()與tolist();

np.r_, np.c_ ,np.meshgrid; list()與tolist();

 1.

np.r_是按列連線兩個矩陣,就是把兩矩陣上下相加,要求列數相等。

np.c_是按行連線兩個矩陣,就是把兩矩陣左右相加,要求行數相等

np.r_[ ] : 按行來拼接,列必須相等

a = np.array([7, 8, 9])
b = np.array([1, 2, 3])
print(a.shape)
print(np.r_[a,b])

c = np.array([[1,2,3],[4,5,6]])
d = np.array([[7,8,9],[10,11,12]])
print(np.r_[c,d])

e = np.array([[1,2,3],[4,5,6]])
f = np.array([[7,8,9],[10,11,12],[13,14,15]])
print(np.r_[e,f])


out:

(3,)
[7 8 9 1 2 3]
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]
 [13 14 15]]

np.c_[ ]  :按列拼接,行必須相等

a = np.array([7, 8, 9])
b = np.array([1, 2, 3])
print(a.shape)
print(np.c_[a,b])

c = np.array([[1,2,3],[4,5,6]])
d = np.array([[7,8,9],[10,11,12]])
print(np.c_[c,d])

e = np.array([[1,2,3,-400],[4,5,6,-100]])
f = np.array([[7,8,9],[10,11,12]])
print(np.c_[e,f])

out:

(3,)
[[7 1]
 [8 2]
 [9 3]]
[[ 1  2  3  7  8  9]
 [ 4  5  6 10 11 12]]
[[   1    2    3 -400    7    8    9]
 [   4    5    6 -100   10   11   12]]

np.meshgrid : 用於產生座標網格

x = np.linspace(1,4,4)
print(x)
print(type(x))
y = np.linspace(1,3,3)
# x按行復制3次
# y按列複製4次
a,b = np.meshgrid(x,y)
print(a)
print(b)
print('------')
print(np.c_[a.ravel(),b.ravel()])

out:
[1. 2. 3. 4.]
<class 'numpy.ndarray'>
[[1. 2. 3. 4.]
 [1. 2. 3. 4.]
 [1. 2. 3. 4.]]
[[1. 1. 1. 1.]
 [2. 2. 2. 2.]
 [3. 3. 3. 3.]]
------
[[1. 1.]
 [2. 1.]
 [3. 1.]
 [4. 1.]
 [1. 2.]
 [2. 2.]
 [3. 2.]
 [4. 2.]
 [1. 3.]
 [2. 3.]
 [3. 3.]
 [4. 3.]]

      list() 與 tolist()的區別:

X=[[1,2,3,4],[5,6,7,8],[9,0,11,12]]
Y=np.array(X)
Q = list(Y)
T = Y.tolist()
print(type(Y))
print(type(Y[0]))
print(type(Y[0][0]))

print(type(Q))
print(type(Q[0]))
print(type(Q[0][0]))

print(type(T))
print(type(T[0]))
print(type(T[0][0]))

out:
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
<class 'numpy.int64'>
<class 'list'>
<class 'numpy.ndarray'>
<class 'numpy.int64'>
<class 'list'>
<class 'list'>
<class 'int'>