Maison > développement back-end > Tutoriel Python > Apprentissage de base de numpy en python et réalisation de calculs de tableaux et de vecteurs

Apprentissage de base de numpy en python et réalisation de calculs de tableaux et de vecteurs

高洛峰
Libérer: 2017-02-14 13:28:33
original
1413 Les gens l'ont consulté

Avant-propos

En python, nous utilisons parfois des tableaux pour exploiter les données, ce qui peut grandement améliorer l'efficacité du traitement des données. Cela est similaire à l'opération de vectorisation de R, qui est une tendance dans le domaine des données. Pour plus de simplicité, les calculs de tableaux et de vecteurs peuvent être effectués à l'aide du module numpy en Python.

Jetons un coup d'œil à un exemple simple


import numpy as np
 
data=np.array([2,5,6,8,3]) #构造一个简单的数组
 
print(data)
Copier après la connexion


Résultat :


[2 5 6 8 3]
Copier après la connexion



data1=np.array([[2,5,6,8,3],np.arange(5)]) #构建一个二维数组
 
print(data1)
Copier après la connexion


Résultat :


[[2 5 6 8 3]
[0 1 2 3 4]]
Copier après la connexion


Nous pouvons également visualiser les dimensions et le format des données du tableau grâce aux méthodes shape et dtype


print(data.shape)
print(data.dtype)
print(data1.shape)
print(data1.dtype)
Copier après la connexion


Résultat :


(5,)
int32

(2, 5)
int32
Copier après la connexion


On peut voir que les données C'est un tableau unidimensionnel, chaque groupe a 5 éléments et le type de données est de type int 32 bits

data1 est un tableau bidimensionnel, chaque groupe a 5 éléments , et le type de données est de type int 32 bits

Une meilleure façon de distinguer est de regarder le nombre et la position des parenthèses dans les résultats imprimés, et vous pouvez voir les dimensions du tableau. les parenthèses représentent une dimension.

Les autres méthodes d'attribut de tableau incluent :

array.ndim La dimension du tableau, le résultat d'un tableau unidimensionnel est 1 et le résultat d'impression d'un le tableau bidimensionnel est 2

array.size Nombre d'éléments dans le tableau

array.itemsiz La taille en octets de chaque élément du tableau

Ensuite, Jetons un coup d'œil aux types de données dans le tableau :

Types de données de base dans NumPy


名称描述
bool用一个字节存储的布尔类型(True或False)
inti由所在平台决定其大小的整数(一般为int32或int64)
int8一个字节大小,-128 至 127
int16整数,-32768 至 32767
int32整数,-2 ** 31 至 2 ** 32 -1
int64整数,-2 ** 63 至 2 ** 63 - 1
uint8无符号整数,0 至 255
uint16无符号整数,0 至 65535
uint32无符号整数,0 至 2 ** 32 - 1
uint64无符号整数,0 至 2 ** 64 - 1
float16半精度浮点数:16位,正负号1位,指数5位,精度10位
float32单精度浮点数:32位,正负号1位,指数8位,精度23位
float64或float双精度浮点数:64位,正负号1位,指数11位,精度52位
complex64复数,分别用两个32位浮点数表示实部和虚部
complex128或complex复数,分别用两个64位浮点数表示实部和虚部

基础的数组运算

数组也可以进行我们常用的加减乘除运算


arr=np.array(np.arange(10))
arr1=np.array(np.arange(1,11))
print(arr*2)
Copier après la connexion


结果:


[ 0 2 4 6 8 10 12 14 16 18]
Copier après la connexion



print(arr+arr1)
Copier après la connexion


结果:


[ 1 3 5 7 9 11 13 15 17 19]
Copier après la connexion


注意,相加两个数组长度要一样

接下来我们看下数组索引


arr=np.arange(10)
Copier après la connexion


用下标直接进行索引


print(arr[5])
Copier après la connexion


结果为:


5
Copier après la connexion


切片索引


print(arr[5:8])
Copier après la connexion


结果为:


[5 6 7]
Copier après la connexion


可以利用索引对数据进行更改操作


arr[5]=120
print(arr)
Copier après la connexion


结果为:


[ 0 1 2 3 4 120 6 7 8 9]
Copier après la connexion


可以看到下标为5的数已经变成120了。

此外,数组还可以进行布尔操作


arr=np.arange(5)
name=np.array(['a','b','b','c','a'])
print(name=='a')
Copier après la connexion


结果为:


[ True False False False True]
Copier après la connexion


即满足条件的数据全部以True的结果输出。

接下来我们可以利用name数组设置条件后的布尔值对arr数组进行相关操作


print(arr[name=='a'])
Copier après la connexion


结果为:


[0 4]
Copier après la connexion


即把arr中对应于name中a相对应位置的元素打印出来。

多条件操作


result=(name='a')|(name='c')
print(result)
print(name[result])
Copier après la connexion


结果为:


[ True False False True True]
['a' 'c' 'a']
Copier après la connexion


接下来,我们了解下ufunc方法

用于操作单个数组的函数有如下:

用于操作两个或多个数组的方法

相关的函数方法使用

np.meshgrid 用于生成多维矩阵


a,b=np.meshgrid(np.arange(1,5),np.arange(2,4))
print(a)
print(b)
Copier après la connexion


结果为:


[[1 2 3 4]
[1 2 3 4]]
[[2 2 2 2]
[3 3 3 3]]
Copier après la connexion


按照数据最少的数组形成数组

np.where 是三元表达式 x if condition else y的矢量化版本


arr1=np.arange(5)
arr2=np.arange(20,25)
condition=np.array([1,0,1,0,0])
result=np.where(condition,arr1,arr2)
print(arr1)
print(arr2)
print(result)
Copier après la connexion


结果为:


[0 1 2 3 4]
[20 21 22 23 24]
[ 0 21 2 23 24]
Copier après la connexion


可以看出,result的结果中,条件为1的显示数组arr1的内容,条件为0的显示arr2的内容

数学统计方法

在数组中我们也可以使用数学统计方法进行计数,例如sum mean std 等


arr=np.random.randint(1,20,10)
print(arr)
print(np.mean(arr))
print(np.sum(arr))
print(np.std(arr))
Copier après la connexion


结果为:


[19 14 8 13 13 10 10 9 19 7]
12.2
122
4.01995024845
Copier après la connexion


具体的方法内容如下图所示:

布尔型数组的相关统计方法


arr=np.arange(-20,10)
result=(arr>5).sum()
print(arr)
print(result)
Copier après la connexion


结果为:


-20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3
-2 -1 0 1 2 3 4 5 6 7 8 9]

4
Copier après la connexion


可以对数据进行判断后进行个数求和

其他的数组方法还有

数据的读取和存储

线性函数的常用方法


arr=np.array([np.random.randint(1,10,5),np.random.randint(10,20,5)])
print(arr)
print(np.dot(arr,2))
Copier après la connexion


结果为


[[ 4 6 5 1 6]
[14 16 11 10 18]]
[[ 8 12 10 2 12]
[28 32 22 20 36]]
Copier après la connexion


dot方法可以进行矩阵相乘操作

其他方法如下图

最后我们了解下numpy中的随机数生成方法

上面的很多例子中我们已经用到了随机数生成,


arr=np.random.random(10)
print(arr)
Copier après la connexion


结果为


[ 0.90051063 0.72818635 0.00411373 0.13154345 0.45513344 0.9700776
0.42150977 0.27728599 0.50888291 0.62288808]
Copier après la connexion


其他形式的随机数生成方法

更多python中numpy基础学习及进行数组和矢量计算相关文章请关注PHP中文网!


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal