我使用的环境是 ipython,所以很多时候会不使用print()
,而是直接使用变量输出。
导入 numpy 库
|
|
数值范围的数组
创建等差数列 arange
arange接受单个参数,创建从0开始到参数等差为1的数列
arange接受三个参数:start,stop,step(开始,结束,差)
|
|
创建等长数列 linspace
linspace支持三种参数:start,stop,number (开始,结束,数值个数)
|
|
创建对数数列
linspace支持三种参数:start,stop,number (开始,结束,个数)底数默认为10
|
|
将底数改为2
|
|
数组调整
多维数组/调整数组大小 ndarry.shape
用ndarry.shape
显示了数组的大小
|
|
这会调整数组大小
|
|
用这个更方便调整数组大小
|
|
数组创建
empty 创建数组
创建一个没有初始化的数组
numpy.empty(shape, dtype = float, order = ‘C’)
|
|
numpy.zeros
用0填充数组,默认数值类型为float
|
|
numpy.ones
|
|
asarray 转换数值为array
类似与 numpy.array 但是主要功能是将list、tuple转换为ndarray数组
list转换
|
|
list转换为float类型
|
|
tuple 元组转换
|
|
元组列表转换
|
|
切片、索引
整数索引
|
|
组合切片
|
|
高级切片
|
|
布尔索引
条件判断,ture输出
|
|
用~(取补运算符)过滤NaN
|
|
取出复数
python中复数i
以j
表示。
|
|
广播
在numpy中的广播,实质上指的的是算数运算期间处理不同形状的数组的能力。
相同的array相加
如果两个array的形状完全相同,那么操作执行起来就非常简单。
|
|
这里展示的是加法,但是其他的运算也是同理。
不同array相加
一个 1x3 数组与 3x3 数组相加
可以看到的是这个操作是将 1x3 数组与 3x3 数组的每一行相加。
|
|
那么如果将一个 1x4 数组与一个 4x1 数组相加呢?
|
|
我们得到了一个 4x4 的矩阵。
但是这个加法必须满足一定条件才可以实现:
- 一个多维数组与一个一维数组相加,一维数组对应的行/列数与多维数组的行/列数一致(上面的上面)
- 一个行向量数组与一个列向量数组相加 (上面的情况)
再演示一下第一种条件:
2x3 + 1x3
|
|
错误演示
3x2 + 1x3 会怎么样呢
|
|
如果是 2x 3 + 3x2 呢? 就不能满足这个状态了,只能将两个array合并。
|
|
数组迭代
数组迭代需要使用 numpy.nditer() ,可以迭代出数据(默认导出为零维数组)
代码说明
|
|
迭代顺序
array使用的存储风格不同(有F ,C,默认为F)根据排序不同,实际在迭代输出的也不同
|
|
当然你也可以在输出的时候再去指定风格
|
|
修改数组的值
迭代的时候nditer也是可以修改值的(默认为read 只读),我们只需要将参数 op_flags的状态改为’readwrite’即可。
|
|
导出一维数组
将flags 参数设为[‘external_loop’] 即可
|
|
广播迭代
如果是两个数组是可广播的那么nditer可以同时迭代他们
|
|
数组操作
修改形状的四种方式
序号 | 形状及描述 |
---|---|
1. | reshape 不改变数据的条件下修改形状 |
2. | flat 数组上的一维迭代器 |
3. | flatten 返回折叠为一维的数组副本 |
4. | ravel 返回连续的展开数组 |
numpy.reshape
|
|
numpy.ndarray.flat
|
|
numpy.ndarray.flatten
该函数返回折叠为一维的数组副本,函数接受下列参数:
ndarray.flatten(order)
order
:'C'
– 按行,'F'
– 按列,'A'
– 原顺序,'k'
– 元素在内存中的出现顺序。
|
|
numpy.ravel
这个函数返回展开的一维数组,并且按需生成副本。返回的数组和输入数组拥有相同数据类型。这个函数接受两个参数。
numpy.ravel(array, order)
array
:要转置的array
order
:'C'
– 按行,'F'
– 按列,'A'
– 原顺序,'k'
– 元素在内存中的出现顺序
|
|
数组翻转(转置)
转置是一个经常操作的操作,存在一下集中方式
序号 | 操作及描述 |
---|---|
1. | transpose 翻转数组的维度 |
2. | ndarray.T 和self.transpose() 相同 |
3. | rollaxis 向后滚动指定的轴 |
4. | swapaxes 互换数组的两个轴 |
#[:,np.newaxis]
作用是转置
numpy.transpose
numpy.transpose(arr, axes=None)
array
:要转置的arrayaxes
:整数的列表,对应维度,通常所有维度都会翻转。(该参数略过)
|
|
ndarray.T 与上面完全相同(所以经常用的是它)
|
|
numpy.rollaxis(这个难懂)
该函数向后滚动特定的轴,直到一个特定位置。这个函数接受三个参数:
numpy.rollaxis(arr, axis, start)
arr
:输入数组axis
:要向后滚动的轴,其它轴的相对位置不会改变start
:默认为零,表示完整的滚动。会滚动到特定位置。
第二个参数为要滚动的轴,第三个为滚动的目标位置。
这里容易搞不懂 axis/axes ,所以请看Numpy小记——有关axis/axes的理解
直接上代码,多想想吧,想通了就好理解了。
|
|