Numpy學習之 一維陣列元素選取

2021-07-08 16:37:30 字數 2602 閱讀 1628

ndarray的一維陣列的元素選取與python列表的切片操作很相似,與列表不同的時,獲取的資料組成乙個新陣列但與原有的陣列共享乙個記憶體儲存空間,即資料更改獲取得到的資料中某個元素的值,原有陣列也會產生相應變化。

下面列舉其種常見的選取方式

首頁使用arange快速建立乙個一維陣列

#coding=utf-8

import numpy as np

arr1 = np.arange(10)

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

1.使用整數為下標選取陣列中的某乙個元素

#取第1個元素

print arr1[0] #輸出 0

2.使用負數為下標反向選擇資料中的某乙個元素

#取第1個元素

print arr1[-1] #輸出9

3.使用切片做為下標選取資料中一部分

(1) 完整的切片形式

[開始索引:結束索引:步長]

如省略開始索引,則開始索引值為0

如省略結束索引,則結束索引值為陣列對應元素最大索引值

如省略步長,則步長值為1

#取索引為0(包含)到索引為2(不包含)之間的元素且步長為1(即第1個和第2個元素)

print arr1[0:2:1] #輸出 [0,1]

#取索引為0(包含)到索引為10(不包含)之間的元素且步長為2(即第1、3、5、7、9個元素)

print arr1[0:10:2] #[0 2 4 6 8]

(2) 省略步長

#取索引為0(包含)到索引為2(不包含)之間的元素(即第1個和第2個元素)

print arr1[0:2] #輸出 [0,1]

(3) 省略結束索引

#從索引為1的元素且步長為2選取元素

print arr1[1::2] #輸出 [1 3 5 7 9]

(4) 省略結束索引和步長

#從索引為1的元素開始選取元素

print arr1[1:] #輸出 [1 2 3 4 5 6 7 8 9]

print arr1[1::] #與上面效果相同,輸出 [1 2 3 4 5 6 7 8 9]

(5) 省略開始索引

#選取索引為0到2之間

print arr1[:2:1] #輸出 [0,1] 這個與arr1[0:2]效果相同

(5) 省略開始索引及步長

#選取索引為0到2之間

print arr1[:2:] #輸出 [0,1] 這個與arr1[0:2]效果相同

(6) 省略開始索引及結束索引

#以步長為2選擇陣列中的元素

print arr1[::2] #輸出 [0 2 4 6 8]

4.使用負數步長來翻轉陣列

#使用負數索引來翻轉

print arr1[::-1] #輸出[9 8 7 6 5 4 3 2 1 0]

print arr1[::-2] #輸出[9 7 5 3 1]

備註:如果是用切片形式選擇陣列中的一部分元素,會形成乙個新的陣列(可以通過 type檢視)且其與原有陣列共享乙個記憶體儲存塊,如果更改新生成的陣列中的元素值,則原有資料對應索引位置的元素的值也會改變,如下列所示

import numpy as np

arr1 = np.arange(10)

print arr1 #輸出 [0 1 2 3 4 5 6 7 8 9]

arr2= arr1[2:5]

print arr2 #輸出 [2 3 4]

arr2[1]=20

print arr2 #輸出 [2 20 4]

print arr1 #輸出 [0 1 2 20 4 5 6 7 8 9]

5、使用整數列表選取

使用整數列表對陣列進行選取操作時,會將整數列表的值做為下標來選取陣列;與使用切片形式做為下標不同的是,選取得到的陣列不會與原有資料共享乙個記憶體儲存塊;即更改得到的新陣列值不會影響原有陣列

# coding=utf-8

import numpy as np

arr1 = np.arange(10)

print arr1 #輸出 [0 1 2 3 4 5 6 7 8 9]

arr2=arr1[[1,1,5,6]]

print arr2 #輸出 [1 1 5 6 ]

arr2[0]=-1

#更改得到的新陣列值不會影響原有陣列

print arr1 #輸出 [0 1 2 3 4 5 6 7 8 9]

numpy學習之(一)

1 numpy.vectorize class numpy.vectorize pyfunc,otypes none,doc none,excluded none,cache false,signature none 定義了乙個向量函式,輸入是巢狀化的物件序列或者是numpy陣列,輸出是單個或元組的...

Java之一維陣列

在使用陣列時,首先要先宣告和初始化陣列。int intarr int intarr 2.陣列初始化 語法 資料型別 資料名 陣列名 new 資料型別 int iarray iarray new int 3.簡化陣列 1 靜態初始化 語法 資料型別 陣列名 使用大括號形式靜態初始化int型別陣列 in...

Java基礎之一維陣列

1 陣列 掌握 1 概述 儲存同一種資料型別的多個元素的容器。同一資料型別 多個元素容器 2 定義格式 a 資料型別 陣列名 例如 int arr1 b 資料型別 陣列名 了解 3 陣列的初始化 a 動態初始化 只給長度,系統給出預設值 格式 資料型別 陣列名 new 資料型別 陣列長度 舉例 in...