numpy笔记

本文是关于numpy的详细笔记,涵盖了numpy的安装、数组创建、算术运算、通用函数、形状操作等多个方面,包括arange、ndarray属性、随机数生成、矩阵乘法、排序、统计函数等核心概念,是学习numpy的重要参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、

1.下载numpy

Numpy用来管理多维数组,通常是数字,可以通过索引来访问

pip install numpy

pip install -i https://pypi.douban.com/simple numpy

pip install -i --trusted-host http://pypi.douban.com/simple numpy

2.arange函数  创建一维数组

a = np.arange(10)

print(a)

print(type(a))

 

3.ndarry属性

a = np.arange(15).reshape(3, 5)

print(a)

 

形状35

print(a.shape)

 

维度(2维)

print(a.ndim)

 

数据类型 int32

print(a.dtype.name)

 

# item 长度 4

print(a.itemsize)

长度15

print(a.size)

 

4.使用array创建数组

使用列表创建一维数组

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

print(a)

print(type(a))

 

使用二维列表创建二维数组

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

print(a)

print(type(a))

5.使用其他方法创建数组

创建具有初始占位符内容的数组

0

a = np.zeros((2, 3))

print(a)

1

a = np.ones((2, 3))

print(a)

默认全1

a = np.empty((2, 3))

print(a)

 

# arange 整型

a = np.arange(1, 10, 2)

print(a)

 

# linspace 浮点型

a = np.linspace(0, 2, 9)

print(a)

 

# zeros_like/ones_like 和另外一个矩阵相似,但是值全为0/1

 

a = np.arange(6).reshape(2,3)

print(a)

a = np.zeros_like(a)

print(a)

 

# np.random.rand() [0, 1)之间的随机数

a = np.random.rand(2, 3)

print(a)

 

# np.eye(3) 对角线全1

a = np.eye(3)

print(a)

 

二、基本操作

1.算数运算作用在元素级别

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

b = np.arange(3)

# [4, 5, 6]

print(a)

# [0, 1, 2]

print(b)

# [4, 4, 4]

print(a-b)

# [0, 1, 4]

print(b ** 2)

 

print(10* np.sin(a))

print(a < 5)

2.乘法运算作用在元素上,如果使用矩阵可以使用odt函数

a = np.array( [[1, 1],

                [0, 1]] )

b = np.array( [[2, 0],

                [3, 4]] )

print(a * b)

 

print(a.dot(b))

print(np.dot(a, b))

3.某些操作(如+=*=)可以修改现有数组,而不是创建新数组

a = np.ones((2,3), dtype=int)

b = np.random.random((2,3))

a *= 3

print(a)

b += a

print(b)

# a += b 类型错误

# print(a)

4.ndarray方法

a = np.random.random((2, 3))

print(a)

print(a.sum())

print(a.min())

print(a.max())

5.指定axis参数

b = np.arange(12).reshape(3,4)

print(b)

列的和

print(b.sum(axis=0))

# # 行的和

print(b.sum(axis=1))

每行累加和

print(b.cumsum(axis=1))

 

三、通用函数

1.all测试沿给定轴的所有数组元素是否wtrue

a = np.all([[True,False],[True,True]])

print(a)

 

a = np.all([[True,False],[True,True]], axis=0)

print(a)

 

a = np.all([-1, 4, 5])

print(a)

2.测定沿给定轴的任何数组元素是否为true

a = np.any([[True, False], [True, True]])

print(a)

 

a = np.any([[True, False], [False, False]], axis=0)

 

a = np.any([-1, 0, 5])

print(a)

 

a = np.zeros((2, 3))

print(np.any(a))

3.argmax/argmin返回沿轴的最大/最小值的索引

a = np.arange(6).reshape(2,3)

print(a)

print(np.argmax(a))

print(np.argmax(a, axis=0))

print(np.argmax(a, axis=1))

 

print(np.argmin(a))

print(np.argmin(a, axis=0))

print(np.argmin(a, axis=1))

4.average沿指定轴计算加权平均值

data = np.arange(6).reshape((3,2))

avg = np.average(data, axis=1, weights=[1./4, 3./4])

print(avg)

5.sort返回数组的排序副本

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

print(np.sort(a))

拉直为一维数组,再排序

print(np.sort(a, axis=None))

沿着纵轴排序

print(np.sort(a, axis=0))

6.argsort返回将数组排序的索引

x = np.array([5, 3, 8])

print(np.argsort(x))

 

二维

x = np.array([[0, 3], [2, 2]])

print(np.argsort(x, axis=0))

7.ceil元素方式返回输入的上限

a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])

print( np.ceil(a))

 

8.floor逐元素的返回输入的下限

a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])

print(np.floor(a))

9.trunc按元素方式返回输入的截断值

a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])

print(np.trunc(a))

10.rint舍入整形

a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])

print(np.rint(a))

11.clip剪辑(限制)数组中的值

给定间隔,间隔之外的值被剪切到间隔边缘。例如,如果指定[0, 1]的间隔,则小于0的值变为0,并且大于1的值变为

 

a = np.arange(10)

数值在1-8之间,不是的替换

print(np.clip(a, 1, 8))

12.mean沿指定轴计算算数平均值

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

print(np.mean(a))

print(np.mean(a, axis=0))

print(np.mean(a, axis=1))

13.var计算沿指定轴的方差

方差定义:

https://baike.baidu.com/item/%E6%96%B9%E5%B7%AE/3108412?fr=aladdin

统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。

 

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

print(np.mean(a)) # 2.5

var = np.mean(abs(a - a.mean())**2)

print(var)

print(np.var(a))

14.std计算沿指定轴的标准偏差,方差的平方根

标准方差:https://baike.baidu.com/item/%E6%A0%87%E5%87%86%E5%B7%AE/1415772?fr=aladdin

 

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

print(np.sqrt(np.var(a)))

print(np.std(a))

 

print(np.std(a, axis=0))

print(np.std(a, axis=1))

15.median计算沿指定轴的中值

a = np.array([[10, 7, 4], [3, 2, 1]])

print(np.median(a))

 

print(np.median(a, axis=0))

print(np.median(a, axis=1))

 

 

四、Numpy索引 迭代、切片

1.一维数组了一索引,切片,迭代类似于列表和其他python序列

a = np.arange(10)**3

print(a)

print(a[2])

print(a[2:6])

 

遍历

for x in a:

    print(x)

2.多维数组每个轴可以有一个索引。这些索引以逗号分隔的元组给出

a = np.arange(12).reshape(3, 4)

print(a)

1行,第2列,索引从0开始

print(a[1,2])

第二列的所有

print(a[:,1])

print(a[1])

迭代

for row in a:

    print(row)

print('--------------')

for row in a:

    for x in row:

        print(x, end=' ')

    print()

 

五、numpy形状操作

1.reshape

a = np.arange(12).reshape(3, 4)

print(a)

print(a.shape)

2.Ravle(拉直)

b = a.ravel()

print(b)

3.a.T转置

c = a.T

print(c)

4.resize(修改自身)

a.resize(2, 6)

# print(a)

5.vstack/hstack水平堆叠/垂直堆叠

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

b = np.array([(10, 20, 30),(40, 50, 60)])

 

c = np.vstack((a, b))

print(c)

 

d = np.hstack((a, b))

print(d)

6.column_stack

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

b = np.array([(10, 20, 30),(40, 50, 60)])

 

print(np.column_stack((a, b)))

7.拆分hsplit/vsplit/array_split(指定轴)

a = np.floor(10*np.random.random((2,12)))

print(a)

print(np.hsplit(a, 3))

 

六、numpy文件读写

1.保存文件savetxt

a = np.eye(3)

print(a)

np.savetxt('eye.txt', a)

print(np)

print(np.loadtxt('eye.txt'))

2.加载csv文件(逗号分隔值)

c,v = np.loadtxt('data.csv', delimiter=',', usecols=(6,7), unpack=True)

print(v)

 

'''

加载数据,加载第六列和第七列到数组中。

'data.csv':数据

delimiter:分隔符

usecols:元组加载第六列和第七列

unpack(True)分开存储

 

CSV(Comma Separated Value, 逗号分隔值)

 

AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800

 0     1        2   3      4      5      6       7

代码,日期,空,开盘价,最高价,最低价,收盘价,日成交量

'''

 

numpy绘图

import numpy as np

import matplotlib.pyplot as plt

a = np.arange(12)

print(a)

# b = np.floor(np.random.rand(12)*5)

b = 2*a + np.floor(np.random.rand(12)*5)

print(b)

 

plt.scatter(a,b)

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值