1. np.newaxis--为 numpy.ndarray(多维数组)增加一个轴]
np.newaxis 在使用和功能上等价于 None,其实就是 None 的一个别名
>> type(np.newaxis)
NoneType
>> x = np.arange(3)
>> x
array([0, 1, 2])
>> x.shape
(3,)
>> x[:, np.newaxis]
array([[0],
[1],
[2]])
>> x[:, None]
array([[0],
[1],
[2]])
>> x[:, np.newaxis].shape
(3, 1)
>>> b = np.array([1, 2, 3, 4, 5, 6])
>>> b[np.newaxis]
array([[1, 2, 3, 4, 5, 6]])
2. np.linspace实现间隔采样
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)[source]
a=np.linspace(-1,1,num=5)
print a
# 输出
>>>[-1. -0.5 0. 0.5 1. ]
3. nan inf
numpy.nan_to_num(x):
使用0代替数组x中的nan元素,使用有限的数字代替inf元素
>>>import numpy as np
>>> a = np.array([[np.nan,np.inf],\
... [-np.nan,-np.inf]])
>>> a
array([[ nan, inf],
[ nan, -inf]])
>>> np.nan_to_num(a)
array([[ 0.00000000e+000, 1.79769313e+308],
[ 0.00000000e+000, -1.79769313e+308]])
和此类问题相关的还有一组判断用函数,包括:
- isinf
- isneginf
- isposinf
- isnan
- isfinite 使用方法也很简单,以isnan举例说明:
>>> import numpy as np
>>> np.isnan(np.array([[1, np.nan, np.inf],\
... [np.nan, -np.inf, -0.25]]))
array([[False, True, False],
[ True, False, False]], dtype=bool)
4. axis
axis和list中的选的时候一样啊...不管是几维,都是当做一个一维数组存,只不过每个数组元素都是地址而已,以345的三维为例,第一层(axis=0,即页)一维数组的元素存的是3个地址,每个地址都指向一个4*5的二维数组,然后第二层(axis=1,即行)一维数组的元素存的是4个地址,每个地址都指向一个长度为5的一维数组,第三层(axis=2,即列)一维数组的元素就是5个元素value。所以莫烦这里讲的二维,axis=0,取行,是将3个长度为4的一维数组相加得到1个长度为4的一维数组,然后对每个元素求平均(这里是三行,即除3)结果得到一个长度为4的一维数组,做的操作实际上代表的是,对列求平均,axis=1取列同理,取的是3个一维数组中每一个一维数组中的各个元素,每个一维数组内部相加求平均(四个元素,即除4),结果得到一个长度为3的一维数组,做的操作实际上代表对行求平均。
A = np.arange(2, 14).reshape(3, 4)
print(A)
print(np.mean(A, axis=1)) # 行
print(np.mean(A, axis=0)) # 列
简单的记法完全没问题:axis=0 表示对行(上下)进行操作计算,axis=1表示对列(左右)进行操作计算
https://blog.csdn.net/Cowry5/article/details/80188056
5. reshape(1, -1)
不知道z的shape属性时,将z变成只有一列/一行,numpy自动计算对应的行和列数
>>> z = np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]])
>>> print(z)
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[13 14 15 16]]
>>> print(z.shape)
(4, 4)
>>> print(z.reshape(-1))
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]
>>> print(z.reshape(-1,1))