python高级语法-你了解numpy吗(numpy进阶)

创建数组等基础操作见:https://blog.csdn.net/zhouchen1998/article/details/82145688

1.索引和切片

基本切片:可以使用slice对象切片,也可以像python内置类型一样。

import numpy as np
a = np.arange(10)
print(a)
s = slice(2, 7, 2)
print(a[s])
print(a[2:7:2])

基本索引:类似list,注意可以使用...表示维度数

a[1,...]  

如上,表示第二行元素。 

高级索引:用数组或者布尔值来访问数组的方式。

a = np.array([[1, 2, 3], [4, 5, 6]])
b = a[[0, 1, 2], [0, 1, 0]]
# 获得上面组合的下标:(0,0),(1,1),(2,0)
a[a>10]

2. 广播

指的是NumPy 在算术运算期间处理不同形状的数组的能力。(也就是做出数学上本不能有结果的数值,例如不匹配的行和列)

这里比较复杂,不多赘述,如果是数据分析或者机器学习方面的可以继续深入研究。

3.迭代

利用numpy.nditer()

import numpy as np
a = np.arange(0, 60, 5)
a = a.reshape(3, 4)
print('原始数组是:')
print(a)
print('\n')
print('修改后的数组是:')
for x in np.nditer(a):
    print(x, end=" ")

4.数组操作

数组操作

-形状修改

reshape 不改变数据的条件下修改形状

flat 数组上的一维迭代器

flatten 返回折叠为一维的数组副本

ravel 返回连续的展开数组

-翻转操作

transpose 翻转数组的维度

ndarray.T 和self.transpose()相同

rollaxis 向后滚动指定的轴

swapaxes 互换数组的两个轴

-维度修改

broadcast 产生模仿广播的对象

broadcast_to 将数组广播到新形状

expand_dims 扩展数组的形状

squeeze 从数组的形状中删除单维条目

-数组连接

concatenate 沿着现存的轴连接数据序列

stack 沿着新轴连接数组序列

hstack 水平堆叠序列中的数组(列方向)

vstack 竖直堆叠序列中的数组(行方向)

-数组分割

split 将一个数组分割为多个子数组

hsplit 将一个数组水平分割为多个子数组(按列)

vsplit 将一个数组竖直分割为多个子数组(按行)

-元素增删

resize 返回指定形状的新数组

append 将值添加到数组末尾

insert 沿指定轴将值插入到指定下标之前

delete 返回删掉某个轴的子数组的新数组

unique 寻找数组内的唯一元素

5.矩阵库

numpy.matlib

对于矩阵提供了很多方便操作

6.matplotlib

著名的绘图库。配合numpy有很强大的数学分析能力。

import numpy as np
from matplotlib import pyplot as plt

x = np.arange(1,11)
y = 2 ** x - 10
plt.title("demo")
plt.xlabel("x ")
plt.ylabel("y ")
plt.plot(x, y)
plt.show()

7.ndarray的IO能力

可以磁盘存储为npy文件。

猜你喜欢

转载自blog.csdn.net/zhouchen1998/article/details/82148836