# 導包 import numpy as np import matplotlib.pyplot as plt # x = np.linspace(1,3,num=100) y = np.linspace(6,8,num=100) xx,yy = np.meshgrid(x,y) display(xx,yy) xx.shape xy = np.c_[xx.reshape(10000,),yy.reshape(10000,)] plt.scatter(xy[:,0],xy[:,1]) plt.scatter([1,2,3],[6,7,8])
numpy.linspace(start, stop[, num=50[, endpoint=True[, retstep=False[, dtype=None]]]]])
返回在指定範圍內的均勻間隔的數字(組成的數組),也即返回一個等差數列html
start - 起始點,python
stop - 結束點數組
num - 元素個數,默認爲50,函數
endpoint - 是否包含stop數值,默認爲True,包含stop值;若爲False,則不包含stop值post
retstep - 返回值形式,默認爲False,返回等差數列組,若爲True,則返回結果(array([`samples`, `step`])),url
dtype - 返回結果的數據類型,默認無,若無,則參考輸入數據類型。spa
import numpy as np a = np.linspace(1,10,5,endpoint= True) print(a) # [ 1. 3.25 5.5 7.75 10. ] b = np.linspace(1,10,5,endpoint= False) print(b) #[1. 2.8 4.6 6.4 8.2] c = np.linspace(1,10,5,retstep = False) print(c) # [ 1. 3.25 5.5 7.75 10. ] d = np.linspace(1,10,5,retstep = True) print(d) # (array([ 1. , 3.25, 5.5 , 7.75, 10. ]), 2.25)
np.meshgrid
從座標向量返回座標矩陣。code
x = np.arange(-2,2) y = np.arange(0,3)#生成一位數組,其實也就是向量 x Out[31]: array([-2, -1, 0, 1]) y Out[32]: array([0, 1, 2]) z,s = np.meshgrid(x,y)#將兩個一維數組變爲二維矩陣 z Out[36]: array([[-2, -1, 0, 1], [-2, -1, 0, 1], [-2, -1, 0, 1]]) s Out[37]: array([[0, 0, 0, 0], [1, 1, 1, 1], [2, 2, 2, 2]])
也就是說,它講 x 變成了矩陣 z 的行向量,y 變成了矩陣 s 的列向量。htm
反過來,也是同樣的:blog
z,s = np.meshgrid(y,x) z Out[40]: array([[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]) s Out[41]: array([[-2, -2, -2], [-1, -1, -1], [ 0, 0, 0], [ 1, 1, 1]])
以上面這個例子來講,z 和 s 就構成了一個座標矩陣,實際上也就是一個網格,不知道你沒有注意到,z 和 s 的維數是同樣的,是一個4 × 4的網格矩陣,也就是座標矩陣。
import numpy as np a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) c = np.c_[a,b] print(np.r_[a,b]) print(c) print(np.c_[c,a])
np.r_是按列鏈接兩個矩陣,就是把兩矩陣上下相加,要求列數相等,相似於pandas中的concat()。
np.c_是按行鏈接兩個矩陣,就是把兩矩陣左右相加,要求行數相等,相似於pandas中的merge()。
[1 2 3 4 5 6] [[1 4] [2 5] [3 6]] [[1 4 1] [2 5 2] [3 6 3]]
在numpy中,一個列表雖然是橫着表示的,但它是列向量。