博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
numpy的计算
阅读量:5141 次
发布时间:2019-06-13

本文共 3598 字,大约阅读时间需要 11 分钟。

### argmin() 和 argmax() :求矩阵中最小元素和最大元素的索引

```python

import numpy as np

A = np.arange(2,14).reshape((3,4))

print(A)

print(np.argmin(A))

print(np.argmax(A))

```

[[ 2 3 4 5]

[ 6 7 8 9]

[10 11 12 13]]

0

11

### 求整个矩阵的均值

```python

print(np.mean(A))

print(A.mean())

print(np.average(A))

```

7.5

7.5

7.5

### 求解中位数的函数:

```python

print(np.median(A))

```

7.5

### 累加函数:cumsum()

```python

print(np.cumsum(A))

```

[ 2 5 9 14 20 27 35 44 54 65 77 90]

#### 在cumsum()函数中:生成的每一项矩阵元素均是从原矩阵首项累加到对应项的元素之和。比如元素9,在cumsum()生成的矩阵中序号为3,即原矩阵中2,3,4三个元素的和。

### 累差运算函数:diff()

```python

print(np.diff(A))

```

[[1 1 1]

[1 1 1]

[1 1 1]]

#### 该函数计算的便是每一行中后一项与前一项之差。故一个3行4列矩阵通过函数计算得到的矩阵便是3行3列的矩阵。

### nonzero()函数:

```python

print(np.nonzero(A))

```

(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))

#### 这个函数将所有非零元素的行与列坐标分割开,重构成两个分别关于行和列的矩阵。

#### 对所有元素进行仿照列表一样的排序操作,但这里的排序函数仍然仅针对每一行进行从小到大排序操作:

```python

import numpy as np

A = np.arange(14,2, -1).reshape((3,4))

print(np.sort(A))

```

[[11 12 13 14]

[ 7 8 9 10]

[ 3 4 5 6]]

### 矩阵的转置有两种表示方法:

```python

print(np.transpose(A))

print(A.T)

```

[[14 10 6]

[13 9 5]

[12 8 4]

[11 7 3]]

[[14 10 6]

[13 9 5]

[12 8 4]

[11 7 3]]

### clip()函数

```python

print(A)

print(np.clip(A,5,9))

```

[[14 13 12 11]

[10 9 8 7]

[ 6 5 4 3]]

[[9 9 9 9]

[9 9 8 7]

[6 5 5 5]]

#### 这个函数的格式是clip(Array,Array_min,Array_max),顾名思义,Array指的是将要被执行用的矩阵,而后面的最小值最大值则用于让函数判断矩阵中元素是否有比最小值小的或者比最大值大的元素,并将这些指定的元素转换为最小值或者最大值。

## Numpy 索引

### 一维索引

```python

import numpy as np

A = np.arange(3,15)

print(A)

print(A[3])

```

[ 3 4 5 6 7 8 9 10 11 12 13 14]

6

```python

A = np.arange(3,15).reshape((3,4))

print(A)

print(A[2])

```

[[ 3 4 5 6]

[ 7 8 9 10]

[11 12 13 14]]

[11 12 13 14]

### 二维索引

```python

print(A[1][1])

print(A[1, 1])

print(A[1, 1:3])

```

8

8

[8 9]

```python

for row in A:

print(row)

```

[3 4 5 6]

[ 7 8 9 10]

[11 12 13 14]

[ 3 7 11]

[ 4 8 12]

[ 5 9 13]

[ 6 10 14]

```python

for column in A.T:

print(column)

```

[ 3 7 11]

[ 4 8 12]

[ 5 9 13]

[ 6 10 14]

### 抽取指定范围的矩阵

```python

A[0:2,0:2]

```

array([[2, 3],

[6, 7]])

### 抽取行或列的索引不连续,可以把这几个索引放在数组里

```python

A[[0,2], 0:2]

```

array([[ 2, 3],

[10, 11]])

### 迭代输出

```python

import numpy as np

A = np.arange(3,15).reshape((3,4))

print(A.flatten())

for item in A.flat:

print(item)

```

[ 3 4 5 6 7 8 9 10 11 12 13 14]

3

4

5

6

7

8

9

10

11

12

13

14

#### flatten()是一个展开性质的函数,将多维的矩阵进行展开成1行的数列。而flat是一个迭代器,本身是一个object属性。

### apply_along_axis(func1d, axis, arr, *args, **kwargs):

参数:funct1d:聚合函数

axis:对那条轴进行迭代

arr:数组

### 另一种有选择性抽取数据的方法:条件表达式和布尔运算符

```python

import numpy as np

n = np.random.random((4,4))

n <0.5

n[n<0.5]

```

array([0.4056797 , 0.41886889, 0.41243354, 0.28667628, 0.29777787,

0.25386625, 0.38528587, 0.39119738, 0.01332086, 0.04075218])

### 形状变换

```python

n = np.random.random(12)

n.shape = (3,4)

n

```

array([[0.83254777, 0.44032215, 0.20834259, 0.67836786],

[0.26714159, 0.88024405, 0.86865931, 0.69952975],

[0.80682802, 0.202754 , 0.56515645, 0.52465079]])

### 还原数组

```python

n = n.ravel()

n

```

array([0.83254777, 0.44032215, 0.20834259, 0.67836786, 0.26714159,

0.88024405, 0.86865931, 0.69952975, 0.80682802, 0.202754 ,

0.56515645, 0.52465079])

```python

n.shape = (12)

n

```

array([0.83254777, 0.44032215, 0.20834259, 0.67836786, 0.26714159,

0.88024405, 0.86865931, 0.69952975, 0.80682802, 0.202754 ,

0.56515645, 0.52465079])

### 转置

```python

n.shape = (3,4)

x = n.transpose()

x

```

array([[0.83254777, 0.26714159, 0.80682802],

[0.44032215, 0.88024405, 0.202754 ],

[0.20834259, 0.86865931, 0.56515645],

[0.67836786, 0.69952975, 0.52465079]])

转载于:https://www.cnblogs.com/lalavender/p/10468553.html

你可能感兴趣的文章
5W1H
查看>>
vue2.0中v-on绑定自定义事件
查看>>
javascript中document对象详解
查看>>
未找到导入的项目"盘符:\Microsft.CSharp.targets"。请确认 <Import> 声明中的路径正确,且磁盘上存在该文件。的解决方法...
查看>>
C语言中的static关键字
查看>>
Missing Number
查看>>
MySQL-定时任务
查看>>
自搭的一个系统框架,使用Spring boot+Vue+Element
查看>>
创业之死:97%的创业失败是因为…… . 分类: 项目管理 ...
查看>>
Ubuntu Desktop变为Ubuntu Server服务器版的方法 分类: ...
查看>>
中断处理程序不能使用printf的本质 分类: vxWorks ...
查看>>
布局自适应
查看>>
SQL Server数据库锁机制及类型
查看>>
nginx 限速最容易理解的说明
查看>>
求最大值及其下标
查看>>
阿里云服务器 http 转 https
查看>>
firefox ReferenceError: $ is not defined 问题解决
查看>>
内置对象
查看>>
[模板] 严格次小生成树
查看>>
Windows下安装Redmine1.3 笔者亲试
查看>>