Python (十二) NumPy操作

2023-12-20 20:45:07

程序员的公众号:源1024获取更多资料,无加密无套路!

最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》,《Java并发编程实战》等等
获取方式: 关注公众号并回复 电子书 领取,更多内容持续奉上


numpy官方文档

官方介绍

它是一个Python库,提供了多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种例程,包括数学,逻辑,形状操作,排序,选择,I/O,离散傅里叶变换,基本线性代数,基本统计操作,随机模拟等等。

NumPy包的核心是narray对象。这封装了同构数据类型的n维数组,许多操作在编译后的代码中执行,以提高性能。NumPy数组和标准Python序列之间有几个重要的区别:

NumPy数组在创建时具有固定的大小,不像Python列表(可以动态增长)。更改narray的大小将创建一个新数组并删除原来的数组。

NumPy数组中的元素都需要具有相同的数据类型,因此在内存中具有相同的大小。例外:可以有(Python,包括NumPy)对象的数组,从而允许不同大小元素的数组。

NumPy数组有助于对大量数据进行高级数学和其他类型的操作。通常,与使用Python的内置序列相比,这样的操作执行效率更高,代码也更少。

安装命令

pip install numpy

属性

import numpy as np

arr = np.array([1,2,3,4,5,6])

print(arr,type(arr))

# 元素类型
print(arr.dtype)
# 数组的维度,对于n行m列的数组,shape为(n,m)
print(arr.shape)
# 元素个数
print(arr.size)
# 维度
print(arr.ndim)
# 每个元素大小(字节)
print(arr.itemsize)

#输出
[1 2 3 4 5 6] <class 'numpy.ndarray'>
int32
(6,)
6
1
4

二维数组

arr2 = np.array([[1,2],[1.1,2.2],[1.11,2.22]])
# 元素类型
print(arr2.dtype)
# 数组的维度,对于n行m列的数组,shape为(n,m)
print(arr2.shape)
# 元素个数
print(arr2.size)
# 维度
print(arr2.ndim)
# 每个元素大小(字节)
print(arr2.itemsize)

#输出
loat64
(3, 2)
6
2
8

函数

array()

用array()函数来创建,括号内可以是列表、元祖、数组、生成器等

arr = np.array(5)
print(arr,type(arr))

arr = np.array([1,2,3])
print(arr,type(arr))

arr = np.array([[1,2,3],[1,2,3]])
print(arr,type(arr))

arr = np.array(range(5))
print(arr,type(arr))

#输出
5 <class 'numpy.ndarray'>
[1 2 3] <class 'numpy.ndarray'>
[[1 2 3]
 [1 2 3]] <class 'numpy.ndarray'>
[0 1 2 3 4] <class 'numpy.ndarray'>

arange()

arange()类似于range(),在给定区间内返回均匀间隔的数值

#返回整型
print(np.arange(6))
#返回浮点型
print(np.arange(6.0))
#返回6到10
print(np.arange(6,10))
#返回6到20,步长为3
print(np.arange(6,20,3))
#返回大数组,无法打印的跳过中心部分
print(np.arange(60000))

#输出
[0 1 2 3 4 5]
[0. 1. 2. 3. 4. 5.]
[6 7 8 9]
[ 6  9 12 15 18]
[    0     1     2 ... 59997 59998 59999]

linspace()

返回样本,指定区间内[开始,停止],计算的num个均匀间隔的样本

print(np.linspace(6,10,15))
#末尾的数值包不包含,其默认值为True
print(np.linspace(6,10,15,endpoint=False))

#创建数组且用0填充
print(np.zeros(5))
print(np.ones(5))
print(np.zeros_like(np.zeros(5)))

#输出
[ 6.          6.28571429  6.57142857  6.85714286  7.14285714  7.42857143
  7.71428571  8.          8.28571429  8.57142857  8.85714286  9.14285714
  9.42857143  9.71428571 10.        ]
[6.         6.26666667 6.53333333 6.8        7.06666667 7.33333333
 7.6        7.86666667 8.13333333 8.4        8.66666667 8.93333333
 9.2        9.46666667 9.73333333]
[0. 0. 0. 0. 0.]
[1. 1. 1. 1. 1.]
[0. 0. 0. 0. 0.]

copy()

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

#输出
[1 2 3 4 5] <class 'numpy.ndarray'>

astype()

arr1=np.arange(10,dtype=float)
arr2=arr1.astype(np.int64)
print(arr1,arr1.dtype)
print(arr2,arr2.dtype)

#输出
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.] float64
[0 1 2 3 4 5 6 7 8 9] int64

hstack()

横向堆叠

a=np.arange(4)
b=np.arange(4,7)
print(a)
print(b)
# 横向连接
print(np.hstack((a,b))) 

#输出
[[1]
 [2]
 [3]]
[['4']
 ['5']
 ['6']
 ['7']]

vstack()

竖向堆叠,必须保证列相同

a=np.array([[1],[2],[3]])
b=np.array([['4'],['5'],['6'],[7]])
print(a)
print(b)
# 竖向堆叠,必须保证列相同
print(np.vstack((a,b))) 

#输出
[['1']
 ['2']
 ['3']
 ['4']
 ['5']
 ['6']
 ['7']]

reshape()

用来改变数组的形状

arr =- np.zeros((3,4),dtype=int)
print(arr)
print(arr.reshape(4,3))

#输出
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
[[0 0 0]
 [0 0 0]
 [0 0 0]
 [0 0 0]]

运算

运算不需要循环遍历,真心强大

arr = np.arange(6).reshape(2,3)
print(arr)
# 加法
print(arr+10) 
# 乘法
print(arr*2) 
# 除法
print(1/(arr+1)) 
# 幂
print(arr**2) 

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

[[10 11 12]
 [13 14 15]]


[[ 0  2  4]
 [ 6  8 10]]


[[1.         0.5        0.33333333]
 [0.25       0.2        0.16666667]]


[[ 0  1  4]
 [ 9 16 25]]
# 平均值
print(arr.mean())
# 最大值
print(arr.max())
# 最小值
print(arr.min()) 
# 标准差
print(arr.std())
# 方差
print(arr.var())
# 求axis为0,按列求和
print(arr.sum(),np.sum(arr,axis=0)) 
# axis为1,按行求和
print(arr.sum(),np.sum(arr,axis=1)) 
# 排序
print(np.sort(np.array([5,34,6,7,2,3]))) 

#输出
2.5
5
0
1.707825127659933
2.9166666666666665
15 [3 5 7]
15 [ 3 12]
[ 2  3  5  6  7 34]


系列文章索引

Python (一) 操作Mysql

Python (二) 读写excel文件

Python (三) 读写csv文件

Python (四)读写word

Python (五) 处理图像

Python (六) 绘图

Python(七)操作JSON


文章来源:https://blog.csdn.net/feikillyou/article/details/135111165
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。