numpy的主要物件是同種元素的多維陣列
特點:這是乙個所有元素都是一種型別,通過乙個正整數元組索引的元素**
numpy底層是使用c編寫的
import numpy as np
arr1 = np.array([1, 2, 3])
# 陣列的秩
# 軸的個數稱為秩
# 軸(axes)是陣列的維度
print(arr1.ndim) # 結論:一維陣列秩為1,二維陣列秩為2
# 陣列的維度
print(arr1.shape) # (3,)--返回的型別,只有乙個元素的元組。
# 此處陣列的維度為1,3表示軸的長度。
# 二維陣列
arr2 = np.array([[1, 2, 3, 4],
[4, 5, 6, 7],
[7, 8, 9, 0]])
print('arr2的秩為:', arr2.ndim)
print('arr2的維度:', len(arr2.shape)) # 2-----(3, 4)
# 二、常用屬性
# 1、ndim
# 2、shape
arr3 = np.array([1, 2, 3, 4, 5, 6])
print(arr3.shape, arr3)
arr3.shape = (2, 3)
print(arr3)
# (3) size
# 元素總和
print(arr3.size)
if len(arr3.shape) == 2:
print('元素總個數:', arr3.shape[0] * arr3.shape[1])
elif len(arr3.shape) == 1:
print('元素總個數:', arr3.shape[0])
# dtype
# 乙個用來描述陣列中元素型別的物件,可以通過創造或指定python型別
print(arr3.dtype) # int32
# itemsize
# 陣列中每個元素的位元組大小
print(arr3.itemsize) # 4個位元組
# data-----陣列的記憶體位址,是資料儲存在記憶體的緩衝區位址
print(arr3.data) #
執行後:
1
(3,)
arr2的秩為: 2
arr2的維度: 2
(6,) [1 2 3 4 5 6]
[[1 2 3]
[4 5 6]]
6元素總個數: 6
int32
4
陣列的建立
# 方法有:
# 1.array()
a1 = np.array([1, 2, 3, 4])
a2 = np.array([(1, 2),
(3, 4)])
print(a2)
a3 = np.array([[1, 2],
[3, 4]])
print(a3.dtype)
# dtype
a4 = np.array([[1, 2],
[3, 4]], dtype=np.float32)
print(a4.dtype)
# 2、arange()函式 建立一維陣列
# 格式:arange(起,止,步長)
# [`start`, `stop`)
a5 = np.arange(0, 1, 0.1)
print(a5, a5.dtype)
a6 = np.arange(0, 90, 1.5)
print(a6)
# 通常無法準確預估元素個數,所以我們一般使用linspace
# 3.使用linspace()函式
# 注意[`start`, `stop`]
a7 = np.linspace(1, 10, 10)
print(a7)
# 4. logspace()--等比數列
# 生成10^1-10^3之間的3個等比數值
a8 = np.logspace(1, 3, 3)
print(a8)
# 生成2^0-2^10之間的10個等比數值
a9 = np.logspace(0, 10, 11, base=2, dtype=np.int32)
print(a9)
# 5.zeros/ones
a10 = np.zeros((2, 3))
print(a10)
a11 = np.ones((2, 3))
print(a11)
# 6、empty()
# 該函式建立乙個內容隨機並且依賴於記憶體狀態的陣列。
a12 = np.empty((2, 3))
print(a12)
# 7、eye()
# 生成n階矩陣,對角線元素為1
a13 = np.eye(3)
print(a13)
# 8.diag()函式
a14 = np.diag([1, 2, 3, 4])
print(a14)
執行後:
[[1 2]
[3 4]]
int32
float32
[ 0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9] float64
[ 0. 1.5 3. 4.5 6. 7.5 9. 10.5 12. 13.5 15. 16.5
18. 19.5 21. 22.5 24. 25.5 27. 28.5 30. 31.5 33. 34.5
36. 37.5 39. 40.5 42. 43.5 45. 46.5 48. 49.5 51. 52.5
54. 55.5 57. 58.5 60. 61.5 63. 64.5 66. 67.5 69. 70.5
72. 73.5 75. 76.5 78. 79.5 81. 82.5 84. 85.5 87. 88.5]
[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
[ 10. 100. 1000.]
[ 1 2 4 8 16 32 64 128 256 512 1024]
[[ 0. 0. 0.]
[ 0. 0. 0.]]
[[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 1. 0. 0.]
[ 0. 1. 0.]
[ 0. 0. 1.]]
[[1 0 0 0]
[0 2 0 0]
[0 0 3 0]
[0 0 0 4]]
Python中numpy陣列的合併
python中numpy陣列的合併有很多方法,如 np.concatenate np.stack np.hstack np.vstack np.dstack 其中最泛用的是第乙個和第二個。第乙個可讀性好,比較靈活,但是佔記憶體大。第二個則沒有記憶體占用大的問題。parameters introduc...
Python中numpy陣列切片
python中符合切片並且常用的有 列表,字串,元組。下面那列表來說明,其他的也是一樣的。格式 開頭 結束 步長 開頭 當步長 0時,不寫預設0。當步長 0時,不寫預設 1 結束 當步長 0時,不寫預設列表長度加一。當步長 0時,不寫預設負的列表長度減一 步長 預設1,0 是從左往右走,0是從右往左...
Python中的Numpy陣列常用操作
最近使用keras做一些東西,然後會經常用到numpy來進行陣列的操作。途中在網上查詢了很多操作的相關方法,這裡將一些我常用到的方法記錄在這,用於遺忘後自己查閱 估計自己以後會經常使用python 也用於大家查閱。np.ones 函式與np.zeros 函式可以建立任意維度的全1或全0陣列。函式引數...