Python中建立ndarrary的20中方法
阿新 • • 發佈:2019-01-24
本文完整示例:完整示例程式碼
本文介紹了基礎的、常用的建立ndarrary的多種方法,附帶示例程式碼。
一、通過ndarray建立
import numpy as np
1.1 一維陣列
a = np.array([1, 2, 3])
a
array([1, 2, 3])
1.2 二維陣列
np.array([[1, 2, 3, 4],
[2, 3, 4, 5]])
array([[1, 2, 3, 4],
[2, 3, 4, 5]])
1.3 三維陣列
arr1 = np.array([
[
[1 , 2, 32, 23],
[23, 3, 23, 3]
],
[
[1, 2, 3, 4],
[23, 3, 4, 32]
]
])
print(arr1)
print(type(arr1))
arr1
[[[ 1 2 32 23] [23 3 23 3]] [[ 1 2 3 4] [23 3 4 32]]] <class 'numpy.ndarray'> array([[[ 1, 2, 32, 23], [23, 3, 23, 3]], [[ 1, 2, 3, 4], [23, 3, 4, 32]]])
二、建立ndarrary的常見函式
2. zeros()函式,指定一個維度元組(形狀引數),返回全0的ndarrary
arr2 = np.zeros((2, 4))
arr2
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
3. ones()函式,指定一個維度元組(形狀引數),返回全1的ndarrary
arr3 = np.ones((4, 4))
arr3
array([[ 1., 1., 1., 1.], [ 1., 1., 1., 1.], [ 1., 1., 1., 1.], [ 1., 1., 1., 1.]])
4. empty()函式,指定一個維度元組(形狀引數),返回一個值(垃圾值)為被初始化的ndarrary
arr4 = np.empty((2, 2))
arr4
array([[ 7.89119642e-312, 4.22795269e-307],
[ 9.34608432e-307, 1.11258854e-306]])
三、其他建立ndarrary的方式
5. numpy.arange([start ], stop[, step ], dtype=None)函式,左開右閉
arr5 = np.arange(1, 10, 1)
arr5
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
6. numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)函式, 產生一個等差數列,左閉右閉
arr6 = np.linspace(0, 4, 5)
arr6
array([ 0., 1., 2., 3., 4.])
7. numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)函式,底數預設為10
arr7 = np.logspace(0, 4, 5, base=2)
arr7
array([ 1., 2., 4., 8., 16.])
8. numpy.eye(N, M=None, k=0, dtype=
arr8 = np.eye(4, 3)
arr8
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.],
[ 0., 0., 0.]])
9. numpy.zeros_like(a, dtype=None, order=’K’, subok=True)函式,返回一個與a的形狀引數一樣的元素全部為0的陣列
Return an array of zeros with the same shape and type as a given array.
引數subok,是否繼承a的資料型別;
引數order,指定返回的結果在記憶體中的儲存佈局,預設是’K’,表示儘可能與a相同。
# 返回一個與arr8形狀應的全0陣列
arr9 = np.zeros_like(arr8)
arr9
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
10. numpy.ones_like(a, dtype=None, order=’K’, subok=True)函式,
返回一個與a的形狀引數一樣且元素全為0的陣列
# 返回一個與ar9形狀應的全0陣列
arr10 = np.ones_like(arr9)
arr10
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
11. numpy.empty_like(a, dtype=None, order=’K’, subok=True)函式,返回一個與a形狀相同且全部值為垃圾值(隨機值)的陣列
Return a new array with the same shape and type as a given array.
arr11 = np.empty_like(np.ones((5,4)))
arr11
array([[ 7.89102294e-312, 6.27463370e-322, 0.00000000e+000,
0.00000000e+000],
[ 8.45593933e-307, 5.30276956e+180, 7.70748458e-043,
4.57487963e-071],
[ 3.45618033e-086, 3.35860426e-143, 6.01433264e+175,
6.93885958e+218],
[ 5.56218858e+180, 3.94356143e+180, 4.75084178e-037,
1.24689504e-047],
[ 3.85156077e-057, 2.06073242e+184, 4.71530148e-143,
1.50008929e+248]])
12. numpy.copy(a, order=’K’)函式,返回與a一樣的陣列
Return an array copy of the given object.
# 屬於深拷貝,修改複製陣列,對原陣列沒有影響
arr12 = np.copy(arr11)
arr12[0, 0] = 1
arr12
array([[ 1.00000000e+000, 6.27463370e-322, 0.00000000e+000,
0.00000000e+000],
[ 8.45593933e-307, 5.30276956e+180, 7.70748458e-043,
4.57487963e-071],
[ 3.45618033e-086, 3.35860426e-143, 6.01433264e+175,
6.93885958e+218],
[ 5.56218858e+180, 3.94356143e+180, 4.75084178e-037,
1.24689504e-047],
[ 3.85156077e-057, 2.06073242e+184, 4.71530148e-143,
1.50008929e+248]])
13. numpy.identity(n, dtype=None)函式,返回一個n階單位方陣
Return the identity array.
arr13 = np.identity(4)
arr13
array([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])
14. numpy.fromfunction(function, shape, **kwargs)返回一個數組,元素的值由函式計算,形狀由shape元組限制
注意:引數shape是一個元組,shape元組中的元素個數需要與函式中的引數個數一致,分別表示不同緯度。
arr20 = np.fromfunction(lambda x, y: x+y, shape=(3, 3))
print(arr20)
arr21 = np.fromfunction(lambda x, y, z: x+y+z, shape=(3, 3, 3))
arr21
[[ 0. 1. 2.]
[ 1. 2. 3.]
[ 2. 3. 4.]]
array([[[ 0., 1., 2.],
[ 1., 2., 3.],
[ 2., 3., 4.]],
[[ 1., 2., 3.],
[ 2., 3., 4.],
[ 3., 4., 5.]],
[[ 2., 3., 4.],
[ 3., 4., 5.],
[ 4., 5., 6.]]])
15. numpy.mgrid函式
arr14 = np.mgrid[-1:3:2] # 表示從-1開始,步長為1,取2個數字
print(arr14)
arr15 = np.mgrid[-1:3:2j] # 當加'j'時,表示左閉右閉,且取到2個數字
print(arr15)
arr16 = np.mgrid[-1:3] # 當指定兩個引數時,功能與numpy.arange()函式一樣
print(arr16)
arr18 = np.mgrid[0:5, 0:5] # 分別在兩個維度上做填充
print(arr18)
[-1 1]
[-1. 3.]
[-1 0 1 2]
[[[0 0 0 0 0]
[1 1 1 1 1]
[2 2 2 2 2]
[3 3 3 3 3]
[4 4 4 4 4]]
[[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]]]
16. numpy.ogrid函式
arr19 = np.ogrid[1:2]
print(arr19)
arr20 = np.ogrid[0:5, 0:5]
print(arr20)
[1]
[array([[0],
[1],
[2],
[3],
[4]]), array([[0, 1, 2, 3, 4]])]
17. numpy.fromstring(string, dtype=float, count=-1, sep=’‘)函式,從字串建立一個一維ndarrary
arr21 = np.fromstring('1 2 3 4', sep=' ')
arr21
array([ 1., 2., 3., 4.])
18. numpy.fromiter(iterable, dtype, count=-1)函式,返回一個一維陣列
# 需要指定資料型別dtype
iterable = (i*i for i in range(4))
arr22 = np.fromiter(iterable,dtype=float)
arr22
array([ 0., 1., 4., 9.])
四、其他方法
19. numpy.fromfile(file, dtype=float, count=-1, sep=’‘)函式,從文字檔案或二進位制檔案中建立ndarrary
20. numpy.loadtxt(fname, dtype=<type ‘float’>, comments=’#’, delimiter=None, converters=None,skiprows=0, usecols=None, unpack=False, ndmin=0)
從檔案中建立。
總結 |
- 能力有限,歡迎指錯交流;
歡迎關注個人微信公眾號WaltSmithML或新浪微博WaltSmith,公眾號提供機器學習、深度學習、Hadoop、Spark、Python、數學知識等免費視訊教程。本人主要方向為機器學習和深度學習。非常歡迎一起交流學習哈,除了學習,還可免費幫忙download論文或者書籍哈==============
♥♥♥微信公眾號♥♥♥♥♥♥♥♥♥新浪微博♥♥