在上一篇文章中,我们已经看到了如何通过numpy创建numpy中的数组,这里再重复一下:

import numpy as np
# 数组
a = [[1, 2, 3], [4, 5, 6]]
print("a:", a) # 矩阵
b = np.array(a)
print("b:", b)

执行后输出为:

a: [[1, 2, 3], [4, 5, 6]]
b: [[1 2 3]
[4 5 6]]

我们可以看到python中的数组和numpy中的数组在屏幕上输出的一些细微的差异:

numpy中的数组输出中是按照行列排列的,并且元素之后是没有逗号分隔的,这样在屏幕输出上我们就能很容易看矩阵,跟数学中矩阵的书写格式比较接近。

我们也可以在创建numpy数组时通过设置dtype来指定数组中元素的类型,例如:

import numpy as np
# python数组
a = [[1, 2, 3], [4, 5, 6]]
print("a:", a) # numpy数组
b = np.array(a, dtype=np.float)
print("b:", b)

上面我们就定义了numpy数组元素的类型为float类型,其输出为:

a: [[1, 2, 3], [4, 5, 6]]
b: [[ 1. 2. 3.]
[ 4. 5. 6.]]

在机器学习中,一般我们定义的元素类型为浮点类型np.float和整型np.int。

全0矩阵

想要输出3行4列全部为0的numpy二维数组:

import numpy as np
a = np.zeros((3,4))
print(a)

输出为:

[[ 0.  0.  0.  0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]

全1数组

我们也经常会用到全1的数组:

import numpy as np
a = np.ones((3, 4), dtype=np.float)
print(a)

输出为:

[[ 1.  1.  1.  1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]]

有人可能会注意到定义几行几列的方法,例如(3, 4),这个是python中的元组类型,本质上就是一个数组,但跟数组不一样的地方是其值是只读的,也就是不可改变元组中元素的值。

生成接近于0的数组

import numpy as np
a = np.empty((3, 4), np.float)
print(a)

输出为:

[[  6.23042070e-307   3.56043053e-307   1.37961641e-306   2.22518251e-306]
[ 1.33511969e-306 1.24610383e-306 1.69118108e-306 8.06632139e-308]
[ 1.20160711e-306 1.69119330e-306 1.29062229e-306 1.29060531e-306]]

np.empty()用于生成接近于0的随机数数组。

生成有序的数列或数组

例如:生成一个从10开始到20结束(不包括结束值),步长为2的数列:

import numpy as np
a = np.arange(10, 20, 2)
print(a)

输出为:

[10 12 14 16 18]

np.arange()还是经常会用到的,看到这个函数,使我联想起python中的range函数,这两者的功能类似,先看个例子:

import numpy as np
# python中创建range对象,然后我们把它转换成list对象并打印出来
a = range(10, 20, 2)
print("python中的range对象:", list(a)) # numpy中的arange函数跟python中的range对象类似
b = np.arange(10, 20, 2)
print("numpy中的arange:", b)

输出为:

python中的range对象: [10, 12, 14, 16, 18]
numpy中的arange: [10 12 14 16 18]

这里arange可以记忆为array中的range函数。

改变数组形状

numpy数组的形状非常重要,也就是几行几列。

在进行数组/矩阵运算中要时刻关注数组/矩阵是什么样的形状,比如数组/矩阵的加法、数组/矩阵的叉乘中对其形状都有相应较严格的规定。

有时为了能够改变数组/矩阵的形状,就需要调用np.reshape()的函数。

例如:

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

输出为:

[[ 0  1  2  3]
[ 4 5 6 7]
[ 8 9 10 11]]

生成线段

import numpy as np
a = np.linspace(1, 10, 20)
print(a)

输出为:

[  1.           1.47368421   1.94736842   2.42105263   2.89473684
3.36842105 3.84210526 4.31578947 4.78947368 5.26315789
5.73684211 6.21052632 6.68421053 7.15789474 7.63157895
8.10526316 8.57894737 9.05263158 9.52631579 10. ]

上述语句生成了从1开始到10,总共有20个数等距的数列。

你可以把它们想象成起始是1,终止是10,总共有20个等距点。

numpy创建array【老鱼学numpy】的更多相关文章

  1. python开发环境搭建及numpy基本属性-【老鱼学numpy】

    目的 本节我们将介绍如何搭建python的开发环境以及numpy的基本属性,这样可以检验我们的numpy是否安装正确了. python开发环境的搭建 工欲善其事必先利其器,我用得比较顺手的是Intel ...

  2. numpy安装-【老鱼学numpy】

    要玩numpy,就得要安装numpy. 安装python 3.6.3 64位 首先需要安装python,安装python的具体方法这里就不细讲了. 可以到官网上下载相应的python版本就可以了,目前 ...

  3. numpy有什么用【老鱼学numpy】

    老鱼为了跟上时代潮流,也开始入门人工智能.机器学习了,瞬时觉得自己有点高大上了:). 从机器学习的实用系列出发,我们会以numpy => pandas => scikit-learn =& ...

  4. numpy的基础运算-【老鱼学numpy】

    概述 本节主要讲解numpy数组的加减乘除四则运算. np.array()返回的是numpy的数组,官方称为:ndarray,也就是N维数组对象(矩阵),N-dimensional array obj ...

  5. numpy array分割-【老鱼学numpy】

    有合并,就有分割. 本节主要讲述如何通过numpy对数组进行横向/纵向分割. 横向/纵向分割数组 首先创建一个6行4列的数组,然后我们对此数组按照横向进行切割,分成3块,这样每块应该有2行,见例子: ...

  6. numpy的array合并-【老鱼学numpy】

    概述 本节主要讲述如何把两个数组按照行或列进行合并. 按行进行上下合并 例如: import numpy as np a = np.array([1, 1, 1]) b = np.array([2, ...

  7. numpy array的复制-【老鱼学numpy】

    对象的引用 看例子: a = np.array([0, 1, 2, 3]) b = a a[0] = 5 print("b=", b) # 判断a和b是否是同样的地址 print( ...

  8. numpy的基础运算2-【老鱼学numpy】

    numpy的基础运算中还有很多运算,我们这里再记录一些. 最小/大值索引 前面一篇博文中我们讲述过如何获得数组中的最小值,这里我们获得最小/大值的索引值,也就是这个最小/大值在整个数组中位于第几位. ...

  9. numpy的索引-【老鱼学numpy】

    简单的索引值 import numpy as np a = np.arange(3, 15).reshape(3, 4) print("a=") print(a) print(&q ...

随机推荐

  1. AJAX初识(原生JS版AJAX和Jquery版AJAX)

    一.什么是JSON 1.介绍 JSON独立于语言,是一种与语言无关的数据格式. JSON指的是JavaScript对象表示法(JavaScript Object Notation) JSON是轻量级的 ...

  2. Elasticsearch6.x和Kibana6.x的安装

    Elasticsearch6.x的安装(centos6.x下) Elasticsearch6.x目前需要至少jdk8的支持,关于如何安装jdk不在讲述.Oracle的推荐安装文档可以在Oracle的网 ...

  3. Dijkstra算法——计算一个点到其他所有点的最短路径的算法

    迪杰斯特拉算法百度百科定义:传送门 gh大佬博客:传送门 迪杰斯特拉算法用来计算一个点到其他所有点的最短路径,是一种时间复杂度相对比较优秀的算法 O(n2)(相对于Floyd算法来说) 是一种单源最短 ...

  4. 一种使用 sprintf 导致死机的情况

    @2019-02-26 [小记] char temp[10] float money; sprintf(temp, "0.2f", money); 以上使用方法可能导致死机,原因是 ...

  5. MySQL防止库存超卖方法总结

    订单超卖问题是涉及到库存项目的重中之重,这里我总结一下常用的方法 1.简单处理[update & select 合并](乐观锁) beginTranse(开启事务)$num = 1; try{ ...

  6. Mybatis的原理与JVM内存结构(面试题)

    Mybatis的原理 1.Mapper 接口在初始SQL SessionFactory注册的 2.Mapper 接口注册在名为MapperRegistry类的 HasMap中 key=Mapper c ...

  7. pandas常用函数之diff

    diff函数是用来将数据进行某种移动之后与原数据进行比较得出的差异数据,举个例子,现在有一个DataFrame类型的数据df,如下: index value1 A 0 B 1 C 2 D 3 如果执行 ...

  8. Typora使用说明(记录总结)

    目录 区域元素 YAML FONT Matters 菜单 段落 标题 引注 序列 可选序列 代码块 数学块 表格 脚注 水平线 特征元素 链接 超链接 内链接 相关链 URLs 图片 斜体 加粗 删除 ...

  9. ACM-ICPC 2018 沈阳赛区网络预赛 K Supreme Number(规律)

    https://nanti.jisuanke.com/t/31452 题意 给出一个n (2 ≤ N ≤ 10100 ),找到最接近且小于n的一个数,这个数需要满足每位上的数字构成的集合的每个非空子集 ...

  10. 前端面试题整理—Vue篇

     1.对vue的理解,有什么特点,vue为什么不能兼容IE8及以下浏览器 vue是一套用于构建用户界面的渐进式框架,核心是一个响应的数据绑定系统 vue是一款MVVM框架,基于双向绑定数据,当数据发生 ...