在上一篇文章中,我们已经看到了如何通过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. [SimplePlayer] 6. 音频同步

    音频的同步并不需要我们在程序实现.在设置好声道.采样率.音频格式后,程序只需要保证能一直提供音频数据就行,其余工作基本都由声卡实现.

  2. ES-6常用语法和Vue初识

    一.ES6常用语法 1.变量的定义 1. 介绍 ES6以前 var关键字用来声明变量,无论声明在何处都存在变量提升这个事情,会提前创建变量. 作用域也只有全局作用域以及函数作用域,所以变量会提升在函数 ...

  3. Python操作文件-20181121

    Python操作文件 Python操作文件和其他语言一样,操作的过程无非是先定位找到文件.打开文件,然后对文件进行操作,操作完成后关闭文件即可. 文件操作方式:对文件进行操作,主要就是读.写的方式,p ...

  4. GoLang-Rpc编程

    Rpc定义: RPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络细节的应用程序通信协议. RPC协议构建于TCP或UDP, ...

  5. jenkins拉源码设置参数化构建选项为tagname

    安装插件:https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/jquery/1.12.4-0/jquery.hpi 安装插件:https://mi ...

  6. 第八节:Task的各类Task<TResult>返回值以及通用线程的异常处理方案。

    一. Task的各种返回值-Task<TResult> PS: 在前面章节,我们介绍了Task类开启线程.线程等待.线程延续的方式,但我们并没有关注这些方式的返回值,其实他们都是有返回值的 ...

  7. 第二节: 比较EF的Lambda查询和Linq查询写法的区别

    简介 在前面EF的介绍中,曾多次提到过EF可以使用Lambda和Linq来完成对数据库的访问,这两种的语法的具体使用和注意事项在前面的DotNet进阶的系列章节中已经详细介绍过了,本次借着EF章节,重 ...

  8. Three ways to detect outliers

    Z-score import numpy as np def outliers_z_score(ys): threshold = 3 mean_y = np.mean(ys) stdev_y = np ...

  9. SpringBoot系列: JdbcTemplate 事务控制

    ============================Spring JdbcTemplate 事务控制============================之前使用 JDBC API 操作, 经常 ...

  10. [Luogu P4180][BJWC 2010]严格次小生成树

    严格次小生成树,关键是“严格”,如果是不严格的其实只需要枚举每条不在最小生成树的边,如果得到边权和大于等于最小生成树的结束就行.原理就是因为Kruskal非常贪心,只要随便改一条边就能得到一个非严格的 ...