Numpy理解

目录

什么是numpy

numpy的安装

numpy数组

定义numpy数组

numpy数组的相关功能

基本操作 

0数组和1数组

 随机数组

二维数组

numpy的数组操作


我们再平常学习python和matlab中经常会看到一个词numpy,并且各大项目算法中都会涉及它,那究竟什么是numpy呢,我们今天就一起来看看吧

什么是numpy

numpy是由两个单词组成的——numerical、python,简单来看就是“数字python”,这样是不是就能很清楚的知道numpy是用来做python中有关于数值操作的呢。

其实呀,numpy就是一个功能强大的python库,提供了大量的库函数和操作,可以帮助我们轻松的进行数值运算,其中就包括:

  • 机器学习:在编写相关算法时,需要用到例如矩阵乘法、加法和换位等运算,这时numpy就提供了用于简单编写代码并且快速计算的库。numpy数组就用于存储训练数据和机器学习模型的参数。
  • 图像处理和计算机图形学:我们在学习matlab时就知道音频信号是一维的,用一些函数就能处理,但是图像确实多维度的,这时numpy就提供了一些非常优秀的库函数来快速处理图像。例如:镜像、旋转等。
  • 数学任务:我们平时学习高数中的积分、微分等是不是觉得很头疼呢,但是numpy确实非常简单,并且会使得python替代matlab

numpy的安装

关于numpy最快速简单的安装方法就是在shell上使用

pip install numpy

但是如果你的pip不是最新版本21.1.1的话,是会下载失败的,查看pip版本用以下命令

pip show pip

######
Name: pip
Version: 21.1.1 
Summary: The PyPA recommended tool for installing Python packages.
Home-page: https://pip.pypa.io/
Author: The pip developers
Author-email: distutils-sig@python.org
License: MIT
Location: d:\pythonproject\venv\lib\site-packages
Requires:
Required-by:

而更新pip则用如下命令

python -m pip install --upgrade pip

numpy数组

numpy数组是numpy提供的最重要的数据结构,他是python列表的扩展,但是却具备大量的函数和运算符,可以帮助我们快速编写各种复杂计算的代码。

定义numpy数组

import numpy as np  # 给numpy定义一个别的名字np
sws_array = np.array([1, 2, 3, 4, 5]) 
print(sws_array)

我们这里先用as给numpy去一个缩写np,使得我们的代码更加简洁,再用import导入numpy库。然后我们创建了5个整数的numpy数组,最后将其打印出来。我们在自己的电脑上尝试的时候,一定一定一定要记得提前安装好numpy库噢!!!

numpy数组的相关功能

其实numpy数组和python列表基本没什么差别,python列表能完成的,numpy数组也能,例如

基本操作 

import numpy as np  # 给numpy定义一个别的名字np
sws_array = np.array([1, 2, 3, 4, 5]) 
print(sws_array)

print(sws_array.shape)  #数组的长度

print(sws_array[0])  #打印索引为0的元素

sws_array[0] = -6  #修改索引为0的元素
print(sws_array[0])

以上代码,大家都可以自己在电脑上尝试一下,我就不一一举例了,我们主要来看看numpy的独特算法

0数组和1数组

import numpy as np  # 给numpy定义一个别的名字np
sws_zeros_array = np.zeros(5)
print(sws_zeros_array)

sws_ones_array = np.ones(5)
print(sws_ones_array)

######
[0. 0. 0. 0. 0.]
[1. 1. 1. 1. 1.]

我们可以看到第二行用 np.zeros,第四行用np.ones就创建了相应的只含0,1的5个元素的数组,至于有没有其他的呢,大家可以自己动手试验一下

 随机数组

我们玩腻了0和1,现在想玩点高难度的,好,满足你,我们来随机数组

import numpy as np  # 给numpy定义一个别的名字np
sws_random_array = np.random.random(5)
print(sws_random_array)

######
[0.4732169  0.46246392 0.11748248 0.68879901 0.43405514]

我们可以看到这里就打印了5个随机数组,当然你们操作的时候可能会和我的不一样,因为是在0-1之间的随机数嘛,哈哈哈,如果一样的话,那慢蜗牛岂不是可以去买彩票了,如果大家不满足0-1的话,可以尝试*10等操作看看结果啦

二维数组

一维数组说完了,我们现在来看看二维数组(i,j),这里i表示了行数,j表示了列数

import numpy as np  # 给numpy定义一个别的名字np
sws_2d_array = np.random.random((2, 3)) * 10
print(sws_2d_array)

######
[[9.50442357 1.3031723  9.3511404 ]
 [3.44925167 2.25456602 2.27545946]]
sws_array = np.array([[1, 2], [6, 9]])
print(sws_array[1][0])

######
6

我们可以看到上面的相关操作,是不是觉得很熟悉呢,没错啦,和我们C语言中的二维数组就是一模一样的操作啦,哈哈哈哈

那我们现在来看看numpy特有的二维数组的操作

如果我们想以此输出某个列或者行的所有元素怎么办呢,这里就可以用到我们的冒号啦

sws_array_lie_0 = sws_array[:, 1]
print(sws_array_lie_0)

######
[2 9]

我们这里是选择打印索引为1的列的所有元素,大家可以尝试一下打印行哈

numpy的数组操作

不知道大家有没有学过线性代数呢,大家在面对矩阵的相乘等操作时,是不是头疼欲裂呢,不要着急,慢蜗牛教程在手,天下我有,一起来看看下面的例子吧

import numpy as np
sws_1 = np.array([[1.0, 2.0], [3.0, 4.0]])
sws_2 = np.array([[5.0, 6.0], [7.0, 8.0]])
sum_0 = sws_1 + sws_2
subtract = sws_1 - sws_2
multiply = sws_1 * sws_2
division = sws_1 / sws_2

print('sum_0=\n', sum_0)
print('subtract=\n', subtract)
print('multiply=\n', multiply)
print('division=\n', division)

######
sum_0=
 [[ 6.  8.]
 [10. 12.]]
subtract=
 [[-4. -4.]
 [-4. -4.]]
multiply=
 [[ 5. 12.]
 [21. 32.]]
division=
 [[0.2        0.33333333]
 [0.42857143 0.5       ]]

我们可以观察到,打印的结果都是对应索引的元素进行相关操作,如果要进行矩阵乘法,我们还需要加一点料

matrix_multiply = sws_1.dot(sws_2)
print(matrix_multiply)

######
[[19. 22.]
 [43. 50.]]
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放氮气的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值