百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

NumPy 入门+使用速查

ztj100 2025-02-10 15:16 23 浏览 0 评论

一、Numpy简介

NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。

NumPy包的核心是 ndarray 对象。它封装了python原生的同数据类型的 n 维数组,为了保证其性能优良,其中有许多操作都是代码在本地进行编译后执行的。

numpy数组创建时是固定大小,python数组(list)是动态的。更改ndarray的大小将创建一个新数组并删除原来的数组。

1. NumPy数组与Phthon List类型区别。

  • NumPy数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。
  • python的List可以存放不同类型的元素。

  例外情况:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组。

  • 数学操作执行效率高于原生python
  • 越来越多的基于Python的科学和数学软件包使用NumPy数组。

2. 安装

pip install numpy

二、ndarray基本知识

NumPy的主要对象是同构多维数组(homogeneous multidimensional array)。它是一个元素表(通常是数字),所有类型都相同,由非负整数元组索引。在NumPy维度中称为 轴(axes)。

例如,3D空间中的点的坐标[1, 2, 1]具有一个轴。该轴有3个元素,所以我们说它的长度为3.在下图所示的例子中,数组有2个轴。第一轴的长度为2,第二轴的长度为3。

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

NumPy的数组类称为ndarray,别名也叫array,但它与Python的array不同。

1. ndarray的属性

  1. ndarray.ndim NumPy数组里axes个数
  2. ndarray.shape 数组的维度
  3. ndarray.size 数组元素个数
  4. ndarray.dtype 元素数据类型,object
  5. ndarray.itemsize 数组中每个元素的字节大小,等同于 ndarray.dtype.itemsize,即数据类型的长度

三、简单使用

1. 使用示例

import numpy as np
a = np.arange(15).reshape(3, 5)
print(a) 
''' 结果
[[ 0 1 2 3 4]
 [ 5 6 7 8 9]
 [10 11 12 13 14]]
'''
print(a.shape, a.ndim, a.dtype.name, a.itemsize, a.size) # (3, 5) 2 int64 8 15
print(type(a)) #

b = np.array([6, 7, 8]) 
print(b) # [6 7 8]
print(type(b)) # 

2. 创建数组

从python元组或数组中创建

a = np.array(1,2,3,4) # WRONG
a = np.array([1,2,3,4]) # RIGHT

将序列的序列转成二维数组

b = np.array([(1.5,2,3), (4,5,6)])
>>> b
array([[ 1.5, 2. , 3. ],
 [ 4. , 5. , 6. ]])

### 创建NumPy数组时指定类型
```c = np.array( [ [1,2], [3,4] ], dtype=complex )```

## 3. 创建特殊数组
### 创建全0数组

array([[ 0., 0., 0., 0.],

 [ 0., 0., 0., 0.],
 [ 0., 0., 0., 0.]])
### 创建全1数组

np.ones( (2,3,4), dtype=np.int16 )
array([[[ 1, 1, 1, 1],

 [ 1, 1, 1, 1],
 [ 1, 1, 1, 1]],
 [[ 1, 1, 1, 1],
 [ 1, 1, 1, 1],
 [ 1, 1, 1, 1]]], dtype=int16)
### 随便创建一个数组

np.empty( (2,3) ) # uninitialized, output may vary
array([[ 3.73603959e-262, 6.02658058e-154, 6.55490914e-260],

 [ 5.30498948e-313, 3.14673309e-307, 1.00000000e+000]])

创建range数组(第3个参数是步长)

np.arange( 10, 30, 5 )
array([10, 15, 20, 25])

创建序列,第3个参数是元素个数

array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])

四、基础操作

1. 元素按位 加 减 乘 除

import numpy as np

a = np.array([20, 30, 40, 50])
b = np.arange(4)
print(b)
c = a - b
print(c)
print(b ** 2)
print(10 * np.sin(a))
print(a < 20)
A = np.array([[1, 1], [0, 1]])


输出:

[0 1 2 3]
[20 29 38 47]
[0 1 4 9]
[ 9.12945251 -9.88031624 7.4511316 -2.62374854]
[False False False False]

2. 矩阵乘法

* 按元素进行运算

import numpy as np

a = np.array([20, 30, 40, 50])
b = np.arange(4)
print(a*b) #[ 0 30 80 150]

矩阵乘积 @或.dot

import numpy as np

a = np.array([20, 30, 40, 50])
b = np.arange(4)
print(a@b) # 260
print(a.dot(b)) # 260

3. 聚合函数

import numpy as np

b = np.arange(12).reshape(3, 4)
'''
输出
[[ 0 1 2 3]
 [ 4 5 6 7]
 [ 8 9 10 11]]
'''
print(b)
print(b.sum(axis=0)) # [12 15 18 21]
print(b.min(axis=1)) # [0 4 8]

五、普通函数universal functions

按元素计算的普通函数:
sin, cons, exp,all, any, apply_along_axis, argmax, argmin, argsort, average, bincount, ceil, clip, conj, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor, inner, INV , lexsort, max, maximum, mean, median, min, minimum, nonzero, outer, prod, re, round, sort, std, sum, trace, transpose, var, vdot, vectorize, where。

测试

numpy.all(a, axis=None, out=None, keepdims=)
沿轴与操作(全非0就返回True)。

numpy.any(a, axis=None, out=None, keepdims=)
沿轴或操作(有一个非0就返回True)。

numpy.apply_along_axis(func1d, axis, arr, *args, **kwargs)
沿轴进行func1d操作。

numpy.argmax(a, axis=None, out=None)
沿轴最大值的索引。

numpy.argmax(a, axis=None, out=None)
沿轴最小值的索引。

np.average
沿轴计算平均值。

numpy.bincount(x, weights=None, minlength=0)
遍历数组x, 创建新的数组y(长度是x中的最大值), 对于x中的每一个元素,执行y[x[i]] += 1 或 y[x[i]] += widht[i]

numpy.ceil
向上取整。

numpy.clip(a, a_min, a_max, out=None)
把数组限制在指定的区间内

numpy.conj(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj]) =
返回共轭复数。

numpy.cumprod(a, axis=None, dtype=None, out=None)
沿着轴把元素一个个相乘,并记录中间结果

numpy.cumsum(a, axis=None, dtype=None, out=None)
沿着轴把元素一个个相加,并记录中间结果

numpy.diff(a, n=1, axis=-1)
沿着轴对相邻的元素做差, 规则: out[n] = a[n+1] - a[n]

numpy.inner(a,b)
内积

六、索引、切片、迭代

1. 一维数组

import numpy as np

a = np.arange(10) ** 3
print(a) # [ 0 1 8 27 64 125 216 343 512 729]
print(a[2]) # 8
print(a[2:5]) # [ 8 27 64]
a[:6:2] = -1000 
# 等于 a[0:6:2] = -1000; 从0到6 每2个设置为-1000
print(a) # [-1000 1 -1000 27 -1000 125 216 343 512 729]
print(a[::-1]) # 倒序 [ 729 512 343 216 125 -1000 27 -1000 1 -1000]

2. 多维数组(重点)

import numpy as np


def f(x, y):
 return 10 * x + y


b = np.fromfunction(f, (5, 4), dtype=int)
print(b)
'''
[[ 0 1 2 3]
 [10 11 12 13]
 [20 21 22 23]
 [30 31 32 33]
 [40 41 42 43]]
'''
print(b[2, 3]) # 23
print(b[0:5, 1]) # [ 1 11 21 31 41]
print(b[:, 1]) # [ 1 11 21 31 41]
print(b[1:3, :])
'''
[[10 11 12 13]
 [20 21 22 23]]
'''
print(b[-1]) # [40 41 42 43]

for row in b:
 print(row)
'''
[0 1 2 3]
[10 11 12 13]
[20 21 22 23]
[30 31 32 33]
[40 41 42 43]
'''

3. dots(...)

dots(...)表示许多个.
比如说 x 是一个5轴的数组,那么:

x[1,2,...] is equivalent to x[1,2,:,:,:],
x[...,3] to x[:,:,:,:,3] and
x[4,...,5,:] to x[4,:,:,5,:]

七、数组形状

vel() / reshape() / T
随机给定一个数组的形状

resize() 函数会改变原来数组的形状

八、不同数组的堆叠

  • np.vstack((a,b))
  • np.hstack((a,b))
  • np.column_stack((a,b))
  • r_
  • c_

相关推荐

其实TensorFlow真的很水无非就这30篇熬夜练

好的!以下是TensorFlow需要掌握的核心内容,用列表形式呈现,简洁清晰(含表情符号,<300字):1.基础概念与环境TensorFlow架构(计算图、会话->EagerE...

交叉验证和超参数调整:如何优化你的机器学习模型

准确预测Fitbit的睡眠得分在本文的前两部分中,我获取了Fitbit的睡眠数据并对其进行预处理,将这些数据分为训练集、验证集和测试集,除此之外,我还训练了三种不同的机器学习模型并比较了它们的性能。在...

机器学习交叉验证全指南:原理、类型与实战技巧

机器学习模型常常需要大量数据,但它们如何与实时新数据协同工作也同样关键。交叉验证是一种通过将数据集分成若干部分、在部分数据上训练模型、在其余数据上测试模型的方法,用来检验模型的表现。这有助于发现过拟合...

深度学习中的类别激活热图可视化

作者:ValentinaAlto编译:ronghuaiyang导读使用Keras实现图像分类中的激活热图的可视化,帮助更有针对性...

超强,必会的机器学习评估指标

大侠幸会,在下全网同名[算法金]0基础转AI上岸,多个算法赛Top[日更万日,让更多人享受智能乐趣]构建机器学习模型的关键步骤是检查其性能,这是通过使用验证指标来完成的。选择正确的验证指...

机器学习入门教程-第六课:监督学习与非监督学习

1.回顾与引入上节课我们谈到了机器学习的一些实战技巧,比如如何处理数据、选择模型以及调整参数。今天,我们将更深入地探讨机器学习的两大类:监督学习和非监督学习。2.监督学习监督学习就像是有老师的教学...

Python教程(三十八):机器学习基础

...

Python 模型部署不用愁!容器化实战,5 分钟搞定环境配置

你是不是也遇到过这种糟心事:花了好几天训练出的Python模型,在自己电脑上跑得顺顺当当,一放到服务器就各种报错。要么是Python版本不对,要么是依赖库冲突,折腾半天还是用不了。别再喊“我...

超全面讲透一个算法模型,高斯核!!

...

神经网络与传统统计方法的简单对比

传统的统计方法如...

AI 基础知识从0.1到0.2——用“房价预测”入门机器学习全流程

...

自回归滞后模型进行多变量时间序列预测

下图显示了关于不同类型葡萄酒销量的月度多元时间序列。每种葡萄酒类型都是时间序列中的一个变量。假设要预测其中一个变量。比如,sparklingwine。如何建立一个模型来进行预测呢?一种常见的方...

苹果AI策略:慢哲学——科技行业的“长期主义”试金石

苹果AI策略的深度原创分析,结合技术伦理、商业逻辑与行业博弈,揭示其“慢哲学”背后的战略智慧:一、反常之举:AI狂潮中的“逆行者”当科技巨头深陷AI军备竞赛,苹果的克制显得格格不入:功能延期:App...

时间序列预测全攻略,6大模型代码实操

如果你对数据分析感兴趣,希望学习更多的方法论,希望听听经验分享,欢迎移步宝藏公众号...

AI 基础知识从 0.4 到 0.5—— 计算机视觉之光 CNN

...

取消回复欢迎 发表评论: