python_numpy数组创建
## 课程随笔—(PYTHON_大数据算法分析02)
## NumPy数组创建
@[TOC](这里写目录标题)
# 前言
<font color=#999AAA >提示:这次我们主要的任务是整理Numpy数组的数组创建与数值计算
<font color=#999AAA >提示:以下是本篇文章正文内容,下面案例可供参考
# 一、NumPy是什么?
NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构(nested list structure)要高效得多(该结构也可以用来表示矩阵(matrix))。
numpy内置了并行运算功能,当系统有多个核心时,做某种计算时,numpy会自动做并行计算。
<font color=#999AAA >示例:而这次我们主要是通过numpy完成对于ndarray数组的使用以及创建和数值运算
# 二、使用步骤
## 1.引入库
<font color=#999AAA >代码如下(示例):
```c
import numpy as np
```
# 三、Numpy数组创建
最基本的创建方式:
numpy.array(object,dtype=None,copy=True,order=None, subok=False,ndmin = 0)
object:表示想要创建数组,无默认。
dtype:表示数组的所需要的数据类型,默认为None。
ndmin:指定生成数组应该具有的最小维数,默认为None。
在创建数组时,object是唯一必要的参数,其余参数均为默认的可选参数。
## 1..创建空数组方法(empty,empty_like)
numpy.empty(shape[], dtype, order]) #返回未初始化的空数组
numpy.empty_like(a[], dtype, order, subok])
<font color=#999AAA >代码如下(示例):
```c
import numpy as np
arr1=np.empty([3,4]) #空数组,注意order是数组风格可取'F','C',和默认原数组风格
print(arr1)
arr2=([3,2,1],[4,5,6],[7,8,9])
arr3=np.empty_like(arr2)
print(arr3)
```
运行结果:

<font color=#999AAA >这里可以发现第二种方式创建的数组arr3保持了arr2的数据类型和尺寸(3*3)
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
## 2.创建全0数组方法(zeros,zeros_like)
numpy.zeros(shape[, dtype, order])#返回特定大小,以0填充的新数组
numpy.zeros_like(a[, dtype, order, subok])
<font color=#999AAA >代码如下(示例):
```c
import numpy as np
arr4=np.zeros([3,4]) #空数组,注意order是数组风格可取'F','C',和默认原数组风格
print(arr4)
arr5=([3,2,1],[4,5,6],[7,8,9])
arr6=np.zeros_like(arr5)
print(arr6)
```

<font color=#999AAA >这里可以发现第二种方式创建的数组arr6保持了arr5的尺寸(3*3)
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
## 3.创建全1数组方法(ones,ones_like)
numpy.ones(shape[, dtype, order])##返回特定大小,以1填充的新数组
numpy.Ones_like(a[, dtype, order, subok])
<font color=#999AAA >代码如下(示例):
```c
import numpy as np
arr7=np.ones([3,4]) #空数组,注意order是数组风格可取'F','C',和默认原数组风格
print(arr7)
arr8=([3,2,1],[4,5,6],[7,8,9])
arr9=np.ones_like(arr8)
print(arr9)
```

<font color=#999AAA >这里可以发现第二种方式创建的数组arr9保持了arr8的尺寸(3*3)
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
## 4.创建对角数组方法(eye,diag)
numpy.eye(N[], M, k, dtype, order])#创建对角全是1,其他范围0填充数组,k是偏移值
numpy.diag(arr)
numpy.identity(n)#创建一个n*n对角线为1其他填充0的方阵,只能创建方阵,也就是N=M
<font color=#999AAA >代码如下(示例):
```c
import numpy as np
arr10=np.eye(3)
print(arr10)
arr11=np.diag(arr10)
print(arr11)
print(np.diag(arr11))
print(np.identity(3))
```

<font color=#999AAA >这里可以发现对于diag
array是一个1维数组时,结果形成一个以一维数组为对角线元素的矩阵
array是一个二维矩阵时,结果输出矩阵的对角线元素
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
## 5.创建指定值填充的数组方法
numpy.full(shape, fill_value[, dtype, order]) #尺寸,值
numpy.full_like(arr, fill_value[, dtype, order, subok])#所选数组的尺寸,填充值
<font color=#999AAA >代码如下(示例):
```c
import numpy as np
arr12=np.full((3,3),5)
print(arr12)
arr13 =np.arange(6, dtype=np.double).reshape(2,3)
print(arr13)
arr14=np.full_like(arr13,0.2)
print(arr14)
```

<font color=#999AAA >这里可以看出arr14保留了arr13的数据类型和尺寸
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
## 6.创建按照数值范围数组方法(arange,linspace,logspace)
numpy.arange(start=0,stop,step=1,dtype)#范围起始位置,范围终止位置,两个值的间隔,数据类型
numpy.linspace(start=0,stop,num=50,endpoint=true,retstep,dtype)#num是生成的数量
numpy.logspace(start,stop,num,endpoint,base,dtype)#restep是序列中是否包含stop值,bases是底数
<font color=#999AAA >代码如下(示例):
```c
import numpy as np
arr15=np.arange(0,15,3)#起始,终止位,数值之间的差值
print(arr15)
arr16=np.linspace(10,30,5)#起始,终止位,生成数值的个数,这里是生成初始值为10,终止值为30数量为5的等差数列
print(arr16)
arr17=np.logspace(1, 3, num=5 )#不输入底数base的话默认为10,这里是生成初始值为10**1,终止值为10**3数量为5的等比数列
print(arr17)
```

<font color=#999AAA >注意:logspace创建等比数列的默认底数是10。
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
## 7.创建现有数据数组方法(asarray,frombuffer,fromiter)
numpy.asarray(arr,dtype=None.order=None)#arr是列表或者元组,输入的数据类型(F,C数组风格)
numpy.frombuffer(buffer,dtype=float,count=-1,offset=0)#buffer:任何暴露缓冲区接口的任何对象,count为需要读取的数据量一,默认-1读取所有顺序,offset为需要读取的起始位置,默认为0.
numpy.fromiter(iterable,dtype,count=-1),iterable:是任何可迭代的对象
#frombuffer将data以流的形式读入转化成ndarray对象
#第一参数为stream,第二参数为返回值的数据类型,第三参数指定从stream的第几位开始读入
#data是字符串的时候,Python3默认str是Unicode类型,所以要转成bytestring在原str前加上b
<font color=#999AAA >代码如下(示例):
```c
import numpy as np
arr18=[4,5,6]
arr19=np.asarray(arr18,dtype=np.float)
print(arr19)
ap=b'Hello World'
arr20=np.frombuffer(ap,dtype='S1')
print(arr20)
```

<font color=#999AAA >。
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
## 8.复制数组方法(copy)
numpy.copy(arr,copy=true)
<font color=#999AAA >代码如下(示例):
```c
import numpy as np
arr21=([1,2,3,4],[4,3,2,1])
arr22=np.copy(arr21)
print(arr22)
```

<font color=#999AAA >。
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
## 9.创建数组方法(tri.tril,triu)
numpy.tri(rows, columns, k, dtype) 行数,列数,默认情况下,它等于行数。k是一个整数值,默认情况下为0。如果k> 0的值,则表示对角线位于主对角线上方,反之亦然。默认情况下float。
numpy.triu(rows, columns, k, dtype)
numpy.tril(rows, columns, k, dtype)
<font color=#999AAA >代码如下(示例):
```c
import numpy as np
print(np.tri(3, 5, 2, dtype=int))
print('\n')
print(np.tri(3, 5, -1))
print('\n')
print(np.tril([[1,2,3],[4,5,6],[7,8,9],[10,11,12]], -1))
print('\n')
print(np.triu([[1,2,3],[4,5,6],[7,8,9],[10,11,12]], -1))
```

<font color=#999AAA >
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
## 10.创建范德蒙矩阵(vander)
numpy.vander(arr, N=None, increasing=False)#increasing是列的幂顺序。 如果为True,则幂从左到右增加,如果为False(默认值),则它们的功率相反。
如果为False(默认值),则它们的功率相反。
<font color=#999AAA >代码如下(示例):
```c
import numpy as np
arr23= np.array([1, 5, 8, 10])
print(np.vander(arr23))
```

<font color=#999AAA >
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
# 总结
<font color=#999AAA >提示:这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了numpy数组的使用
还有注意:Order的属性有’C’,’F’,’A’为保留原顺序

浙公网安备 33010602011771号