10. Numpy的基本使用

Numpy官网
Numpy官网快速入门教程

10.1 Numpy基础

1)NumPy的主要对象是相同元素的多维数组。它的元素类型是相同的。在NumPy中,维数(dimensions)也称为轴(axes)。
2)例如,3D空间中的点的坐标[1, 2, 1]只有一个轴。该轴上有3个元素,所以我们说它的长度为3。在下图所示的示例中,数组有2个轴。第一轴的长度为2,第二轴的长度为3。也就是几维数组就有几个轴。

[[ 1., 0., 0.],
 [ 0., 1., 2.]]

3)NumPy的数组类称为ndarray,也叫array。但是,numpy.array与标准Python库类的array.array是不同的,后者仅处理一维数组且功能较少。numpy可以完成高效的矩阵运算。

10.2 Numpy中array的属性

1)numpy中的array有一些常见的属性:维数(ndim)、形状(shape)、大小(size)、数据类型(dtype)、元素字节数(itemsize)等,用法如下:

import numpy as np
#创建一个二维array
array = np.array([[1,2,3],
                  [2,3,4]])
#打印属性
print(array)
print(array.ndim)
print(array.shape)
print(array.size)
print(array.dtype)
print(array.itemsize)

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

10.3 Numpy中array的创建

1)通常情况下我们使用list或者tuple来初始化array:

import numpy as np
#创建一个一维数组   数据类型为int
array1 = np.array( [1,2,3], dtype = int )
#创建一个二维array  数据类型为float
array2 = np.array( ( (1,2,3), (2,3,4) ) ,dtype = float)
#创建一个三维数组
array3 = np.array( [[(1.3,2,3),(2,3.4,4)],[(1,2,3),(2,3,4)]] ,dtype = float)

#打印属性
print(array1)
print(array2)
print(array3)
print(array3.ndim)
print(array3.shape)

输出:
[1 2 3]
[[1. 2. 3.]
 [2. 3. 4.]]
[[[1.3 2.  3. ]
  [2.  3.4 4. ]]

 [[1.  2.  3. ]
  [2.  3.  4. ]]]
3
(2, 2, 3)

2)也可以创建一些特殊的array:

import numpy as np
#创建一个三行四列所有元素都是0的数组 默认为float类型
array1 = np.zeros((3,4))
#创建一个2*3*4的数组  数据类型为int
array2 = np.ones( (2,3,4),dtype = int)
#创建一个从10到25(不包含25) 每隔5个创建一个
array3 = np.arange(10, 25 ,5, dtype = float)
#从0到2 四个数平均的一维数组
array4 = np.linspace(0,2,4)
#创建一个3*3的单位矩阵
array5 = np.eye(3)
# 创建一个2*2的随机矩阵
array6 = np.random.random((2,2))
# 创建一个2*2空矩阵 里面的元素随机
array7 = np.empty((2,2))
# 创建一个所有元素都为7的2*2矩阵
array8 = np.full((2,2) , 7)
#打印属性
print(array1)
print(array2)
print(array3)
print(array4)
print(array5)
print(array6)
print(array7)
print(array8)
运行结果:
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
[[[1 1 1 1]
  [1 1 1 1]
  [1 1 1 1]]

 [[1 1 1 1]
  [1 1 1 1]
  [1 1 1 1]]]
[10. 15. 20.]
[0.         0.66666667 1.33333333 2.        ]
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
[[0.57967404 0.76892429]
 [0.58360366 0.10839214]]
[[6.23037657e-307 8.90104239e-307]
 [3.56050863e-307 1.60219035e-306]]
[[7 7]
 [7 7]]

10.4 Numpy中array的基础运算

1)值得注意的是numpy中array的运算都是对应元素计算,对于乘法需要使用dot()函数来使用矩阵运算。

import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[2,3],[4,5]])
print(a)
print(b)
print(a + b)
print(a - b)
# 对应元素相乘两种方式
print(a * b)
print(np.multiply(a,b))
# 矩阵乘法
print(a.dot(b))
# 对应元素相除两种方式
print(a / b)
print(np.divide(a,b))
# 一些数学运算
print(np.exp(a))
print(np.sqrt(a))
print(np.sin(a))
print(np.cos(a))
print(np.log(a))

#比较运算 每个元素对应输出false或true
print( a < 2 )
print( a == b)
输出:
[[1 2]
 [3 4]]
[[2 3]
 [4 5]]
[[3 5]
 [7 9]]
[[-1 -1]
 [-1 -1]]
[[ 2  6]
 [12 20]]
[[ 2  6]
 [12 20]]
[[10 13]
 [22 29]]
[[0.5        0.66666667]
 [0.75       0.8       ]]
[[0.5        0.66666667]
 [0.75       0.8       ]]
[[ 2.71828183  7.3890561 ]
 [20.08553692 54.59815003]]
[[1.         1.41421356]
 [1.73205081 2.        ]]
[[ 0.84147098  0.90929743]
 [ 0.14112001 -0.7568025 ]]
[[ 0.54030231 -0.41614684]
 [-0.9899925  -0.65364362]]
[[0.         0.69314718]
 [1.09861229 1.38629436]]
 
[[ True False]
 [False False]]
[[False False]
 [False False]]

2)一些统计运算:可以加上axis信息axis=0表示沿着竖直统计,axis=1表示水平行统计:

import numpy as np
a = np.array([[1,2],[3,4]])
print(a)
# 平均数
print(np.average(a))
print(np.average(a,axis=0))
# 中位数
print(np.median(a))
print(np.median(a, axis= 0))
# 最大值
print(np.max(a))
print(np.max(a,axis=1))
# 均值
print(np.mean(a,axis=1))
# 标准差
print(np.std(a,axis=1))
# 方差
print(np.var(a,axis=1))
输出:
[[1 2]
 [3 4]]
2.5
[2. 3.]
[1.5 3.5]
2.5
[2. 3.]
4
[2 4]
[1.5 3.5]
[0.5 0.5]
[0.25 0.25]

3)向量的叉乘:

import numpy as np
a = np.array([1,0,0])
b = np.array([0,1,0])
c = np.cross(a,b)
print(a)
print(b)
print(c)
输出:
[1 0 0]
[0 1 0]
[0 0 1]

10.5 Numpy中元素访问

1)对于一维array来说,访问方式和list相同:

import numpy as np
a = np.array([1,2,3,4])
print(a)
print(a[0])
print(a[1])
print(a[0:2])
print(a[0:])
print(a[:3])


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

2)对于二维及以上array访问方式如下:

import numpy as np
# 二维矩阵
a = np.arange(12).reshape(3, 4)

print(a)
# 返回的是list
print(a[0])         #访问第0行
print(a[1])         #访问第1行
print(a[1,2])       #访问第1行第二列元素6
print(a[1:,2])      #访问第一行到最后一行所有第二列的元素6和10
print(a[ a < 6])    #a中小于6的元素的list
# 如果两个维度都用冒号,返回的是numpy.array类型
print(a[1:2,:2])   #访问第一行第0列到第二列的元素
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[0 1 2 3]
[4 5 6 7]
6
[ 6 10]
[0 1 2 3 4 5]
[[4 5]]

3)一维array和二维array的遍历:

import numpy as np
a = np.array([1,2,3,4])
# 一维array的遍历
for i in a:
    print(i)
# 二维array
b = np.arange(12).reshape(3,4)
# 按行访问
for i in b:
    print(i)

# 按列访问
for i in b.T:
    print(i)

print(b.flatten())  # 返回一个list   和b.ravel()一样
#print(b.flat)       # 返回一个generator
# 逐个遍历所有元素
for i in b.flat:
    print(i)
1
2
3
4
[0 1 2 3]
[4 5 6 7]
[ 8  9 10 11]
[0 4 8]
[1 5 9]
[ 2  6 10]
[ 3  7 11]
[ 0  1  2  3  4  5  6  7  8  9 10 11]
0
1
2
3
4
5
6
7
8
9
10
11

10.6 Numpy中array的合并

import numpy as np
a = np.array(([1,2,3,4],[5,6,7,8]))
b = np.array(([5,6,7,8],[9,10,11,12]))
# 垂直方向合并
print(np.vstack((a,b)))
# 水平方向合并
print(np.hstack((a,b)))

# 另外一种方式
print(np.concatenate((a,b,a),axis = 0 ))
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 5  6  7  8]
 [ 9 10 11 12]]
[[ 1  2  3  4  5  6  7  8]
 [ 5  6  7  8  9 10 11 12]]
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 5  6  7  8]
 [ 9 10 11 12]
 [ 1  2  3  4]
 [ 5  6  7  8]]

10.7 Numpy中array的分割

import numpy as np
a = np.arange(12).reshape((3,4))

print(a)
# 在水平方向上分成三块
print(np.split(a,3,0))
#print(np.vsplit(a,3))

# 在垂直方向上分成2块
print(np.split(a,2,1))
#print(np.hsplit(a,2))

# 不等量的分割
print(np.array_split(a,3,1))
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2],
       [ 6],
       [10]]), array([[ 3],
       [ 7],
       [11]])]
       

10.8 Numpy中深拷贝和浅拷贝

import numpy as np
a = np.arange(4)
# numpy中直接等于号赋值是浅拷贝
b = a
c = a
a[0] = 6
print(a)
print(c)
print(b is a)

# 深拷贝用copy()
d = a.copy()
print(d is a)
a[0] = 3
print(d)
[6 1 2 3]
[6 1 2 3]
True
False
[6 1 2 3]

10.9 Numpy中的排序

import numpy as np
a = np.array(([3,2,4],[3,5,1]))
# sort方法默认沿着axis=0的方向从小到大排序
print(a)
a.sort(axis=0)
print(a)
a.sort(axis=1)
print(a)
[[3 2 4]
 [3 5 1]]
[[3 2 1]
 [3 5 4]]
[[1 2 3]
 [3 4 5]]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值