>

LoeiJe

:D 获取中...

何以解忧?唯有暴富

numpy学习笔记

numpy学习笔记

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 2019-10-23
# numpy 学习笔记
# icenaive
# 参考: https://github.com/lijin-THU/notes-python
# 仅供个人学习使用
#
# 16 ufunc 对象
# Numpy 有两种基本对象:ndarray (N-dimensional array object) 和 ufunc (universal function object)。ndarray
# 是存储单一数据类型的多维数组,而 ufunc 则是能够对数组进行处理的函数。
# 例如,我们之前所接触到的二元操作符对应的 Numpy 函数,如 add,就是一种 ufunc 对象,它可以作用于数组的每个元素。

import numpy as np
a = np.array([0, 1, 2])
b = np.array([2, 3, 4])

print(np.add(a, b))

print(dir(np.add))
# reduce 方法 op.reduce(a)
# 将op沿着某个轴应用,使得数组 a 的维数降低一维。
# add 作用到一维数组上相当与求和
a = np.array([1, 2, 3, 4])
print(np.add.reduce(a))

a = np.array([[1, 2, 3], [4, 5, 6]])

print(np.add.reduce(a))
# 指定维度
print(np.add.reduce(a, -1))

# 作用与字符串
a = np.array(['ab', 'cd', 'ef'], np.object)

print(np.add.reduce(a))

# 逻辑运算
a = np.array([1, 1, 0, 1])
print(np.logical_and.reduce(a))
print(np.logical_or.reduce(a))


# accumulate 方法
# accmulate 可以看成保存 reduce 每一步的结果所形成的数组
print(np.add.accumulate(a))
a = np.array(['ab', 'cd', 'ef'], np.object)
print(np.add.accumulate(a))

a = np.array([1, 1, 0, 1])
print(np.logical_and.accumulate(a))

print(np.logical_or.accumulate(a))

# reduceat 方法 op.reduceat(a, indices)
# reduceat 方法将操作符运用到指定的下标上,返回一个与 indices 大小相同的数组:
a = np.array([0, 10, 20, 30, 40, 50])
indices = np.array([1, 4])
print(np.add.reduceat(a, indices))
# 这里,indices 为 [1, 4],所以 60 表示从下标1(包括)加到下标4(不包括)的结果,
# 90 表示从下标4(包括)加到结尾的结果。

# outer 方法
# op.outer(a, b)
# 对于 a 中每个元素,将 op 运用到它和 b 的每一个元素上所得到的结果:
a = np.array([0, 1])
b = np.array([1, 2, 3])

print(np.add.outer(a, b))
# 有顺序分别
print(np.add.outer(b, a))