Numpy学习笔记

Numpy官方指南学习笔记(1)

2018-10-01  本文已影响0人  koolo

基础:

一些例子

创造ndarray类型变量:

1. 用python的列表或是元组创造:

numpy.array()

用列表创造ndarray 用元组创造ndarray 指定类型

2. 创造初始数组:

实际上就是创造一个给定维数和每一维元素个数的数组,但不传入数据,而是用一些特定的数代替比如说0, 1等。相当于在内存中分配一个位置。

1. numpy.zeros():

全部用0来填充,默认类型为numpy.float32

numpy.zeros()

例子中创建了一个三维的数组,第一维有3个元素,第二维有4个元素,第三维有2个元素

2. numpy.ones()

全部用1来填充,默认类型维numpy.float32

numpy.ones()

例子中创建了一个三维数组,第一维有2个元素,第二维有5个元素,第三维有7个元素

3. numpy.empty()

创建一个数组,数组中的数取决于数组在内存中的位置处的值

numpy.empty()

创建出来的数组一般是非常奇怪的数,但也有可能创建出来非常整齐的数(如:本人在测试的时候创建了一个全是0.的(2, 3, 4)数组),不要多想,纯属巧合,重新打开IDLE一般就会不一样了。

4. numpy.arange([start, ]stop, [step, ]dtype=None)

创建一个数列, 可以传递四个参数:
start:开始值(默认为0);
stop:终止值;
step:步长(默认为1)
dtype:元素类型(默认为传入的数值的类型)

numpy.arange()

注意start和step要么同时有,要么同时无,也就是传递的参数要么是1个(只有stop),要么是3个(有start, stop, step),要么是4个(start, stop, step, dtype),不可能传递两个参数,如果一个有一个无,无法正确输出。

5. numpy.linespace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

创建一个以start为起点,stop为终点,中间有num项的等差数列:
1. start:开始值
2. stop:终止值
3. num:元素的个数(默认为50, 也就是生成50个元素,要是非负数)
4. endpoint: 如果为真,则终止值是最后一个元素,否则不包含终止值(默认为包含)
5. retstep: 如果为真,则以元组形式返回数组和步长,否则只返回数组(默认不返回步长)
6. dtype: 数据类型

numpy.linspace()

这个函数的endpoint参数很有意思。从上面的例子可以看出,如果为False的话,则不包含stop,步长的话就是(stop-start)/num,因为start占用了一个位置,因此最后一个数一定是start+(stop-start)/num(num-1)<stop恒成立,也就一定不包含stop。但是为True的话,那么就是start+step(num-1) = stop,得到step=(stop-start)/(num-1)。

6. numpy.zeros_like(a, dtype=None, order='K', subok=True)

返回一个和a相同结构和数据类型,但全部用零填充的数组:

  1. a:想要复制结构的数组
  2. dtype:元素类型(默认为a的元素类型)
  3. order:改变数组的内存布局(Memory Layout),默认为‘K',意味着尽可能接近a的布局
  4. subok: 如果为True,则使用a的子类类型,否则创建一个新的基类
numpy.zeros_like()

7. numpy.ones_like(a, dtype=None, order='K', subok=True)

返回一个和a相同结构和数据类型, 但全部用1来填充的数组,与numpy.zeros_like()相似

numpy.ones_like()

8. numpy.empty_like(a, dtype=None, order='K', subok=True)

返回一个和a相同结构和数据类型, 但全部用随机数来填充的数组,与numpy.zeros_like()相似

numpy.empty_like()

9. numpy.random.rand(d0, d1, d2, d3...dn)

创建一个数组,数组的结构为(d0, d1, d2, d3....),每一个元素的值在[0, 1)区间内:

d0, d1, d2, d3...:必须为整数,表示当前维度的元素个数,如果没有传入参数则返回一个浮点数

numpy.random.rand() numpy.random.rand()

10. numpy.random.randn(d0, d1, d2, d3, d4)

创建一个数组,数组的结构为(d0, d1, d2, d3....),每一个元素的值在[0, 1)区间内, 且满足标准正态分布N(0, 1):

d0, d1, d2, d3...:必须为整数,表示当前维度的元素个数,如果没有传入参数则返回一个浮点数

numpy.random.randn()

如果要返回N(μ, σ^2), 使用公式σ*np.random.randn() + μ

输出

基本运算

1. 加减法, a+b, a-b:

相同shape的两个数组可以相加减,对应元素相加减:

numpy 加减运算

2. 元素积(elementwise product) a*b:

对应元素相乘,两个数组交换位置结果不变:

元素积

3. 矩阵积(matrix product) a@b, a.dot(b)

满足矩阵乘法, 两个数组交换位置结果可能变化:

矩阵积

4. +=, *=:

运算规则与单个数的相似,但注意:

  1. 运算的两个数组要有相同的结构
  2. 某些类型不会自动转化:

一般只能从低精度的类型向高精度的类型转化

5. .min(), .sum(), .max():

运算规则与一元数据一样, 但可以将运算施加于特定的维度

指定维度的运算
上一篇 下一篇

猜你喜欢

热点阅读