numpy-100知识点

以下numpy-100题中涉及的一些知识点。

numpy-100涉及知识点广泛,适合复习和查漏补缺。


np.version, np.show_config:
获取numpy的版本和配置信息

np.info
获取说明文档
例:np.info(np.add)

np.pad:
对数组填充
详细可见

np.nan:
nan=not a number
故:

输入 输出
0 * np.nan nan
np.nan == np.nan False
np.inf > np.nan False
np.nan - np.nan nan
0.3 == 3 * 0.1 False

np.unravel_index:
例子:考虑一个 (6,7,8) 形状的数组,其第100个元素的索引(x,y,z)是什么?

1
print(np.unravel_index(100,(6,7,8)))

np.tile:
将原矩阵横向、纵向地复制。
例子:用tile函数去创建一个 8x8的棋盘样式矩阵

1
2
Z = np.tile( np.array([[0,1],[1,0]]), (4,4))
print(Z)

np.dtype:
查询属性。
此外,还有定义类型。
例 :创建一个将颜色描述为(RGBA)四个无符号字节的自定义dtype?

1
2
3
4
color = np.dtype([("r", np.ubyte, 1),
("g", np.ubyte, 1),
("b", np.ubyte, 1),
("a", np.ubyte, 1)])

np.copysign:

1
numpy.copysign(array1,array2)       将第二个数组中值得符号复制给第一个数组中值

np.intersect1d:
找到两个数组的交集。

时间操作功能:
np.datetime64, np.timedelta64。
例:today = np.datetime64(‘today’, ‘D’) 查询今日日期
timedelta64数据类型用以补充datetime64。timedelta64的参数是一个数字,代表单位数,一个日期/时间单位,例如(D)ay,(M)onth,(Y)ear,(h)ours,(m)inutes或(s)其次。timedelta64数据类型还接受字符串“ NAT”代替“ Not A Time”值的数字。

取整:

1
2
3
4
print (np.floor(Z))
print (np.cell(Z)-1)
print (Z.astype(int))
print (np.trunc(Z))

np.ufunc.reduce:
Reduces array’s dimension by one, by applying ufunc along one axis.
add.reduce()=sum(),且在小数组求和中前者更快。

np.allclose, np.array_equal:
前者判断相近(相等),后者判断相等。

flags.writeable
把数组变为只读。

1
2
3
Z = np.zeros(5)
Z.flags.writeable = False #把数组变为只读。
Z[0] = 1 #报错

打印数组中所有的值:

1
2
3
np.set_printoptions(threshold=np.nan)
Z = np.zeros((16,16))
print(Z)

np.meshgrid():
生成网格点坐标矩阵。

np.genfromtxt:
读取txt。

数组索引:
np.ndenumerate:返回一个迭代器,生成数组坐标和值对。
np.ndindex:索引数组的N维迭代器对象。

np.bincount:
计数非负整数数组中每个值的出现次数。

1
2
np.bincount(np.array([0, 1, 1, 3, 2, 1, 7]))
array([1, 3, 1, 1, 0, 0, 0, 1])

np.unique:
去除数组中的重复数字,并进行排序之后输出。

np.diag:
当 np.diag(array) 中
array是一个1维数组时,结果形成一个以一维数组为对角线元素的矩阵。
array是一个二维矩阵时,结果输出矩阵的对角线元素。

多维切片之冒号和三个点:
None代表新增加一个维度。
…代表所有的冒号。

np.repeat:
将numpy数组重复。 numpy.repeat(a, repeats, axis=None)

np.cumsum:
numpy.cumsum(a, axis=None, dtype=None, out=None)
返回沿着给定轴的元素的累积和。
axis=0,按照行累加。
axis=1,按照列累加。
axis不给定具体值,就把numpy数组当成一个一维数组。

**注意:**cumsum(b)[-1] 可能不等于 sum(b)

因为sum直接将每个数字单独加到结果上。

1
2
3
4
5
>>>	b = np.array([1, 2e-9, 3e-9] * 1000000)
>>> b.cumsum()[-1]
1000000.0050045159
>>> b.sum()
1000000.0050000029

numpy-100知识点
https://lijianxiong.work/2021/20210829/
作者
LJX
发布于
2021年8月29日
许可协议