numpy的安装和创建

#安装

##1.以管理员的形式打开cmdnumpy的安装和创建

 

2.输入命令 pip list 查看是否有numpy

numpy的安装和创建

# 数据创建

使用array创建

array语法

"""
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
"""
import numpy as np

#使用array创建一维数组
list01 = [1,2,3,4]
np01 = np.array(list01)
print(np01)
print(type(np01))
#使用array创建二维数组
list02 = [[1,2,3,4],[5,6,7,8]]
np02 = np.array(list02)
print(np02)
print(type(np02))
#使用array创建三维数组
list03 = [[[1,2,3,4],[5,6,7,8],[9,10,11,12]]]
np03 = np.array(list03)
print(np03)
print(type(np03))

array参数的使用

| 参数   | 参数及描述                                                   |
| ------ | ------------------------------------------------------------ |
| Object | 任何序列类型                                                 |
| dtype  | 数组的所需数据类型,可选。                                   |
| copy   | 可选,默认为true,对象是否被复制。                           |
| order  | C(按行)、F(按列)或A(任意,默认)。                      |
| subok  | 默认情况下,返回的数组被强制为基类数组。如果为true,则返回子类。 |
| ndimin | 指定返回数组的最小维数。                                     |
#  Object  任何序列类型  
tuple01 = (1,2,3)
list01= [1,2,3]
set01 = {5,6,7}
dict01 ={"张三":10,"李四":20}
np01= np.array(dict01)
print(np01)

#dtype    数组的所需数据类型,可选。  
list01 = [1,2,3]
np01= np.array(list01,dtype=float)
print(np01)


"""
说明 np02 是 np01 的副本,两个是不同的对象
所以np02 和 np01 的数据不同
"""
list01 = [1,2,3]
np01= np.array(list01)
np02=np.array(np01,copy=True)
np02[0]=10
print(np01)
print(np02)
"""
可以看到数据是一样的,说明np02和np01是同一个对象
"""
list01 = [1,2,3]
np01= np.array(list01)
np02=np.array(np01,copy=False)
np02[0]=10
print(np01)
print(np02)

#由于order效果不明显,也不常用,在这里作为了解

#subok    默认情况下,返回的数组被强制为基类数组。如果为true,则返回子类。 
#matrix 是矩阵 之后会给大家详细讲解先回用
np01 = np.matrix('1 2 7; 3 4 8; 5 6 9')
print(type(np01))
print(np01)
np02 = np.array(np01, subok=True)
np03 = np.array(np01, subok=False)
print(type(np02)) #<class 'numpy.matrix'> 如果是true返回矩阵
print(type(np03)) #<class 'numpy.ndarray'>如果是False,强制改为了数组

#ndimin    指定返回数组的最小维数。  
list01 = [1,2,3]
np01= np.array(list01,dtype=float,ndmin=3)
print(np01)

使用arange创建

先来复习以下range函数
"""
range(start,stop,step)  函数可创建一个整数列表
1.不写start,默认从0开始
2.左开右闭
3.step步长,不写默认是1
"""
for i in range(10):
    print(i)
"""
arange(start,stop,step,dtype) 
1.不写start,默认从0开始
2.左开右闭
3.step步长,不写默认是1
"""
#一维数组
a = np.arange(10) #[0 1 2 3 4 5 6 7 8 9]
a = np.arange(2,10) #[2 3 4 5 6 7 8 9]
a = np.arange(1,10,2) #[1 3 5 7 9]
a = np.arange(1,10,2,dtype=float)
print(a)
#二维数组
#切记前面的12,必须满足3*4
np01  = np.arange(12).reshape(3, 4)
print(np01)

#使用random创建数组

常用的random函数

| **函数**                                             | **描述**                               |
| :--------------------------------------------------- | -------------------------------------- |
| np.random.random(size)                               | 生成0到1之间的随机数                   |
| np.random.randint(low,high=None,size=None,dtype="1") | 生成随机的整数                         |
| np.random.randn(d0,d1,d2,d3.........)                | 生成标准正态的随机数(期望为0,方差为1) |
| np.random.normal(loc,scale,size)                     | 生成正态分布(指定期望和方差)           |
| np.random.uniform(low,high,size)                     | 生成均勻分布的随机数                   |
| np.random.shuffle()                                  | 随机打乱顺序                           |
| np.random.seed()                                     | 设置随机数种子                         |
| np.random.sample(size)                               | 生成随机的浮点数                       |
 np.random.random()    生成0到1之间的随机数  
#创建一维数组   size生成几个数据,可直接写4
np01= np.random.random(size=4) #[0.13475357 0.8088961  0.52055803 0.49706622]
#创建二维数组  size=(3,4) 3行4列 可用()和[] ,效果一样
np01= np.random.random((3,4))
#创建三维数组  两个三行四列
np01= np.random.random((2,3,4))
print(np01) 
"""
np.random.normal(loc,scale,size)生成正态分布(指定期望和方差)
loc: 期望,默认0
scale: 方差,默认1.0
size: 长度
"""
np01= np.random.normal(size=5)
np01= np.random.normal(loc= 2,scale=3,size=5)
np01= np.random.normal(size=(2,3,5))
print(np01)
"""
np.random.uniform(low,high,size) 生成均勻分布的随机数
low: 不写默认是0,
high: 结尾,
: 长度
1.左开右闭
"""
np01= np.random.uniform(size= 4)#四个数据几乎不会相差太多,比较均匀
np01= np.random.uniform(size= (2,4))
np01= np.random.uniform(high=3)
print(np01)
"""
np.random.seed()设置随机数种子
从每堆种子里选出来的数都是不会变的,从不同的堆里选随机种子每次都不一样,若想每次都能得到相同的随机数,每次产生随机数之前,都需要调用一次seed()
"""
np.random.seed(1)
np01= np.random.randint(1,10,size= 5)
np.random.seed(1)
np02= np.random.randint(1,10,size = 5)
print(np01)
print(np02)
"""
np.random.sample(size)  生成随机的浮点数
"""
np01= np.random.sample(size=2)
print(np01)
np02= np.random.sample(size=(2,3))
print(np02)

#使用zeros创建数组

numpy.zeros(shaps,dtype=float,order="C") #创建指定大小的数组,数组以0填充
"""
numpy.zeros(shaps,dtype=float,order="C") #创建指定大小的数组,数组以0填充
shaps:维度
dtype:数据类型
order:按行按列
"""
np01= np.zeros(5) #[0. 0. 0. 0. 0.]
np01= np.zeros(5,dtype="int32")  #[0 0 0 0 0]
np01= np.zeros((2,5),dtype="int32") 
"""
[[0 0 0 0 0]
 [0 0 0 0 0]]
"""
print(np01)

#创建特定形状的多维数组

| **函数**             | **描述**                                                   |
| -------------------- | ---------------------------------------------------------- |
| np.zeros((3, 4))     | 创建3×4的元素全为0的数组                                   |
| np.ones((3, 4))      | 创建3×4的元素全为1的数组                                   |
| np.empty((2, 3))     | 创建2×3的空数组,空数据中的值并不为0,而是未初始化的垃圾值 |
| np.zeros_like(ndarr) | 以ndarr相同维度创建元素全为0数组                           |
| np.ones_like(ndarr)  | 以ndarr相同维度创建元素全为1数组                           |
| np.empty_like(ndarr) | 以ndarr相同维度创建空数组                                  |
| np.eye(5)            | 该函数用于创建一个5×5的矩阵,对角线为1,其余为0            |
| np.full((3,5), 10)   | 创建3×5的元素全为10的数组,10为指定值                      |
np01= np.ones((2,5),dtype="int32")
np01= np.empty((2,5),dtype="int32")
print(np01)
list01= [
    [1,2,3],
    [4,5,6]
]
np01= np.array(list01)
print(np01.shape)
np02= np.zeros_like(np01,dtype=float)
print(np02)
print(np02.shape)
#  np.eye(5)    该函数用于创建一个5×5的矩阵,对角线为1,其余为0  
np01= np.eye(5)
print(np01)
# np.full((3,5), 10)    创建3×5的元素全为10的数组,10为指定值  
#10是指定的,你可以指定任意值
np01= np.full((3,5),5)
print(np01)

#使用linspace创建数组

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

| 参数     | **描述**                                                |
| -------- | ------------------------------------------------------- |
| start    | 序列的起始值                                            |
| stop     | 序列的终止值  ,如果endpoint=True,则证明数组包含于数列 |
| num      | 生成样本数量,默认是50                                  |
| endpoint | 如果为ture则包含stop,否则不包含                        |
| retstep  | 如果retstep=Ture,生成的数组会显示间距,否则不显示      |
| dtype    | 数据类型                                                |

```python
"""
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
"""
np01= np.linspace(1,10,5)#从1-10,生成5个数据
np01= np.linspace(1,10,5,endpoint=True)#把10包含进去
np01= np.linspace(1,10,5,endpoint=False)#把10不包含进去
np01= np.linspace(1,10,5,retstep=True)#显示间距
np01= np.linspace(1,10,5,dtype="int32")
print(np01)
```

#使用logspace创建数组

np.logspace(start,stop,num=50,endpoint=Ture,base=10.0,dtype=None)

| 参数     | **描述**                                                |
| -------- | ------------------------------------------------------- |
| start    | 序列的起始值                                            |
| stop     | 序列的终止值  ,如果endpoint=True,则证明数组包含于数列 |
| num      | 生成样本数量,默认是50                                  |
| endpoint | 如果为ture则包含stop,否则不包含                        |
| base     | 对数log的底数,默认10.0                                  |
| dtype    | 数据类型                                                |

上一篇:numpy的安装和创建


下一篇:对抗训练fgm和pgd原理和源码分析