Numpy知识点总结

1.介绍及安装

Numpy是Numerical Python的简称。NumPy系统是Python的一种开源的数值计算框架。这种工具可用来存储和处理大型矩阵,相当于将Python变成一种免费的更强大的MatLab系统。

安装:cmd窗口中输入

pip install numpy

官方文档:

https://docs.scipy.org/doc/numpy/user/quickstart.html

使用:(导入numpy并将其重命名为np)

import numpy as np

 

2.ndarray

ndarray是一种多维数组对象

2-1.创建一维数组

import numpy as np

data1 = [1, 2, 3, 4, 5]
arr1 = np.array(data1)
print(arr1) 

2-2.创建二维数组

import numpy as np

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

2-3.dtype数据类型

print(arr1.dtype)

输出结果:int32

2-4.shape属性

print(arr2.shape)

输出结果:(2,4) 代表2行4列

2-5.指定数据类型

arr3 = np.array(data2, dtype=np.int64)
print(arr3.dtype)

2-6.float类型的数组

data3=[1,1.5,2,3,4]
arr3=np.array(data3)
print(arr3)
print(arr3.dtype)

输出结果:

[1.  2.5 3.  4.  5. ]
float64

2-7.astype 类型转换

data3 = [1, 2.5, 3, 4, 5]
arr3 = np.array(data3)
print(arr3.astype(np.int64))

输出结果: 

[1 2 3 4 5]

2-8.ones方法---全为1的数组

arr4=np.ones(10)
print(arr4)

 输出结果:

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

2-9.zeros方法

arr5=np.zeros(10)
print(arr5)

 输出结果:

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

还可以创建二维的

arr5=np.zeros((3,4))
print(arr5)

 输出结果:

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

2-10.数组和标量之间的运算

特性:大小相等的数组之间的任何运算都会应用到元素级,使我们不用编写循环即可对数组中的元素执行批量运算。

nd = np.array([1, 2, 3, 4])
print(nd*2)
print(nd*nd)
print(nd+nd)

输出结果:

[2 4 6 8]
[ 1  4  9 16]
[2 4 6 8]

2-11.基本的索引和切片

2-11-1.arange:range函数的数组版

arr6=np.arange(10)
print(arr6)
输出结果:
[0 1 2 3 4 5 6 7 8 9]

arr6=np.arange(1,10,2)
print(arr6)
输出结果:[1 3 5 7 9]

通过索引获取部分元素: 

arr6=np.arange(1,10,2)
print(arr6)
print(arr6[3])
print(arr6[1:3])
输出结果:
[1 3 5 7 9]
7
[3 5]

通过索引赋值:

arr6=np.arange(1,10,2)
print(arr6)
arr6[2]=10
print(arr6)
输出结果:
[1 3 5 7 9]
[ 1  3 10  7  9]

通过索引查找:

data = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr7 = np.array(data)
print(arr7)
print(arr7[0])
print(arr7[1,2])
输出结果:
[[1 2 3 4]
 [5 6 7 8]]

[1 2 3 4]

7

2-12.花式索引---Fancy indexing

花式索引是一个numpy术语,指利用整数数组进行索引

2-12-1.reshape方法---可以将一个一维数组变成一个二维数组

arr1=np.arange(12)
print(arr1)
输出结果:
[ 0  1  2  3  4  5  6  7  8  9 10 11]

arr2=np.reshape(arr1,(3,4))
print(arr2)
输出结果:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

2-12-2花式索引

arr1=np.arange(12)
print(arr1)
输出结果:
[ 0  1  2  3  4  5  6  7  8  9 10 11]


arr2=np.reshape(arr1,(3,4))
print(arr2)
输出结果:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

#常规索引
print(arr2[0])
输出结果:
[0 1 2 3]

#花式索引--传入一个数组(数组中的数代表第几行)
print(arr2[[1,2]])
输出结果:
[[ 4  5  6  7]
 [ 8  9 10 11]]

#选取多行、多列交叉处的元素
print(arr2[[0,1],[2,3]])  #得到的是0行2列,和1行3列的元素
输出结果:
[2 7]

# 获取矩形区域
# 方法1
print(arr2[[0, 1]][:, [1, 2]])
输出结果:
[[1 2]
 [5 6]]

# 方法2 np.ix_
arr = arr2[np.ix_([0, 1], [1, 2])]
print(arr)
输出结果:
[[1 2]
 [5 6]]

3.通用函数(ufunc)

ufunc---universal funcations是一种对ndarray中的数据执行元素级运算的函数,如sqrt,exp

3-1.sqrt函数--开根号

arr1 = [1, 4, 9, 16]
arr2 = np.sqrt(arr1)
print(arr2)
输出结果:
[1. 2. 3. 4.]

3-2.add函数--使两个数组相加

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.add(arr1, arr2)
print(arr3)
输出结果:
[5 7 9]

3-3.maximum函数--取每个数组的对应位置的最大值组成新的数组

arr1 = np.array([1, 5, 3])
arr2 = np.array([4, 2, 6])
arr3 = np.maximum(arr1, arr2)
print(arr3)
输出结果:
[4 5 6]

4-常用数学和统计方法

np.random.randn()--返回指定维度的随机数组

1-产生一个一维的随机数组

arr = np.random.randn(9)
print(arr)
#求最值
print(arr.min())
print(arr.max())
 
#求均值
print(arr.mean())  
 
#求和
print(arr.sum())  
 
#排序(从小到大)
arr.sort()     
print(arr)

2-产生一个二维的随机数组

arr = np.random.randn(5,3)
print(arr)
#求最值
print(arr.min())
print(arr.max())
 
#求均值
print(arr.mean())
 
#排序(按行排序:从小到大)
arr.sort()
print(arr)
 
#排序(按列排序:从小到大)
arr.sort(axis=0)
print(arr)
 
#linespace---将区间等分,参数1是起始值,参数2是终点值,参数3是份数
arr = np.linspace(0, 10, 5)
print(arr)
输出结果:
[ 0.   2.5  5.   7.5 10. ]

 3-线性代数

# 生成2个矩阵
x = np.array([[1, 2, 3], [4, 5, 6]])
print(x)
 
y = np.array([[6, 23], [-1, 7], [8, 9]])
print(y)
 
 
#矩阵相乘(第一个矩阵的列要等于第二个矩阵的行才能相乘)
r = x.dot(y)
print(r)
 
# 矩阵求逆
from numpy.linalg import inv
m = np.array([[4, 2], [3, 1]])
n = inv(m)
print(n)

4-随机数的生成

# 随机数的生成
from numpy import random
 
# normal方法--服从正态分布
rArray = random.normal(size=(4, 4))
print(rArray)
 
# randint 产生给定上下限范围内的随机选取整数(包括start,不包括end)
r = random.randint(0, 3)   #产生0或1或2
print(r)

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值