Numpy学习

一、Numpy是什么

NumPy(Numerical Python) 是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,主要用于数组计算。

二、数组的创建

1.直接用np.array创建

import numpy as np
arr1 = np.array([1,2,3,4])
arr2 = np.array([[1,2],[3,4]])
print("一维数组:\n",arr1)
print("二维数组:\n",arr2)

输出:
一维数组:
 [1 2 3 4]
二维数组:
 [[1 2]
 [3 4]]

2.通过列表转换成数组

import numpy as np
arr_1 = [1,2,3,4]
arr_2 = [[1,2],[3,4]]
arr1 = np.array(arr_1)
arr2 = np.array(arr_2)
print("一维数组:\n",arr1)
print("二维数组:\n",arr2)

输出:
一维数组:
 [1 2 3 4]
二维数组:
 [[1 2]
 [3 4]]

3.用函数创建数组

①创建都是0的数组 - zeros

import numpy as np
print("一维数组:\n",np.zeros(3),"\n")
print("二维数组:\n",np.zeros((2,2)),"\n")
print("三维数组:\n",np.zeros((2,3,3)),"\n")

输出:
一维数组:
 [0. 0. 0.] 

二维数组:
 [[0. 0.]
 [0. 0.]] 

三维数组:
 [[[0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]]

 [[0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]]] 

②创建都是1的数组 - ones

print("一维数组:\n",np.ones(3),"\n")
print("二维数组:\n",np.ones((2,2)),"\n")
print("三维数组:\n",np.ones((2,3,3)),"\n")

输出:
一维数组:
 [1. 1. 1.] 

二维数组:
 [[1. 1.]
 [1. 1.]] 

三维数组:
 [[[1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]

 [[1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]] 

③创建指定维度的单位矩阵 - eye

eye()函数调用的只能是二维数组

print("二维单位矩阵:\n",np.eye(4),"\n")

输出:
二维单位矩阵:
 [[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]] 

④创建一维数组:arange

import numpy as np
print("一维数组:\n",np.arange(3),"\n") # 输出0-2
print("一维数组:\n",np.arange(1,10,2),"\n") # 输出1-9,中间依此+2

输出:
一维数组:
 [0 1 2] 
一维数组:
 [1 3 5 7 9] 

⑤linspace()函数

import numpy as np
print(np.linspace(0,2,10)) # 将0-2划分为10个等分

输出:
[0.         0.22222222 0.44444444 0.66666667 0.88888889 1.11111111
 1.33333333 1.55555556 1.77777778 2.        ]

⑥数组维数转换 - reshape

a1 = np.array([1,2,3,4])
print(a1.reshape(2,2))

输出:
[[1 2]
 [3 4]]

三、数组的运算

1.数组+标量(实数)

数组中的每个位置都加上这个标量

arr2 = np.array([[3,4,5],[6,7,8]])
print(arr2 + 2)

输出:
[[ 5  6  7]
 [ 8  9 10]]

2.数组+数组

对应位置的值,做对应的运算
加法:对应位置相加
减法:对应位置相减
乘法:对应位置相乘
除法:对应位置相除

以加法为例:
arr1 = np.array([[1,2,3],[4,5,6]])
arr2 = np.array([[3,4,5],[6,7,8]])
print(arr1+arr2)

输出:
[[ 4  6  8]
 [10 12 14]]

3.数组转化矩阵,对矩阵做乘法 - mat

注意:数组的乘法需要同行同列,但是矩阵需要前面一个的列等于后面一个的行才可以使用乘法。

arr1 = np.array([[1,2],[4,5]])
arr2 = np.array([[3,4],[6,7]])
arr3 = np.mat(arr1)
arr4 = np.mat(arr2)
print(arr1*arr2)
print(arr3*arr4)

输出:
[[ 3  8]
[24 35]]

[[15 18]
[42 51]]

4.数组维度展开 - 广播性

扩展可以理解为复制
np.array([1,2]) == np.array([[1,2],[1,2]])

arr1 = np.array([1,2])
arr2 = np.array([[3,4],[6,7]])
print(arr1+arr2)

输出:
[[4 6]
[7 9]]

四、数组的索引

从0开始索引
axis = 0 - - 行
axis = 1 - -列
axis = 2 - -个数(三维的)

1.一维数组的索引

规律:包前不包后
arr[:3] == arr[0:3]
arr[4:] == arr[4:10]

arr1 = np.arange(10)
print(arr1[5]) # 下标为5(第六位)
print(arr1[:3]) # 下标为0-2,输出
print(arr1[3:6]) #下标为3-5,输出

输出:
5
[0 1 2]
[3 4 5]

2.二维数组索引

用逗号,分隔行维度和列维度

arr = np.array([[1,2,3],[2,3,4],[3,4,7]])
print(arr[1]) # 第二行
print(arr[2,1]) #第三行第二列
print(arr[:,1]) #全部行第二列

输出:
[2 3 4]
4
[2 3 4]

3.布尔索引

arr[arr<5]=0 # 当在arr中,有值比5小,就把它复制给0

arr = np.array([[1,2,3],[2,3,4],[3,4,7]])
arr[arr<5]=0 # 当在arr中,有值比5小,就把它复制给0
print(arr)

输出:
[[0 0 0]
 [0 0 0]
 [0 0 7]]

五、数学统计方法

注意:下面所有的方法中
axis = 0,都是对列做运算
axis = 1,都是对行做运算

1.均值mean - 平均值

arr = np.array([[1,2,3],[7,3,4],[3,4,7]])
print(np.mean(arr))
print(np.mean(arr,axis = 0)) # 对列求均值
print(np.mean(arr, axis = 1)) #对行求均值

输出:
3.7777777777777777
[3.66666667 3.         4.66666667]
[2.         4.66666667 4.66666667]

2.sum方法 - 求和

arr = np.array([[1,2,3],[7,3,4],[3,4,7]])
print(np.sum(arr))
print(np.sum(arr,axis = 0)) # 对列求和
print(np.sum(arr, axis = 1)) #对行求和

输出:
34
[11  9 14]
[ 6 14 14]

3.最大值最小值:max,min

arr = np.array([[1,2,3],[7,3,4],[3,4,7]])
print(np.max(arr))
print(np.max(arr,axis = 0)) # 每列的最大值
print(np.max(arr, axis = 1)) #每行的最大值

输出:
7
[7 4 7]
[3 7 7]

4.排序 - sort

系统默认的是行排序

arr = np.array([[1,2,3],[7,3,4],[3,4,7]])
print(np.sort(arr)) # 默认行排序
print(np.sort(arr,axis = 0)) # 按照列排序
print(np.sort(arr, axis = 1)) #按照行排序

输出:
[[1 2 3]
 [3 4 7]
 [3 4 7]]
 
[[1 2 3]
 [3 3 4]
 [7 4 7]]
 
[[1 2 3]
 [3 4 7]
 [3 4 7]]

5.唯一化

最常见的可能要数np.unique了,它用于找出数组中的唯一值,并返回已排好序的结果。

names=np.array([3,3,3,2,2,1,1,4,4])  
np.unique(names) 

输出:
array([1, 2, 3, 4])

6.生成随机数

在这里插入图片描述
在这里插入图片描述

7.数组拼接

np.vstack()和np.hstack()【v代表列,h代表行】
调用他们就是,在每列下面加,或者每行后面加

#列添加
a=np.array([[1,2,3],
            [4,5,6]]) 
b=np.array([[7,8,9],
            [10,11,12]]) 
np.vstack((a,b))

输出:
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])
 # 行添加
a=np.array([[1,2,3],
            [4,5,6]]) 
b=np.array([[7,8,9],
            [10,11,12]]) 
np.hstack((a,b))

输出:
array([[ 1,  2,  3,  7,  8,  9],
       [ 4,  5,  6, 10, 11, 12]])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值