python基础整理二(numpy)

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 python基础整理二(numpy),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

通过指定url安装指定包

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy

numpy[数据处理]

数组可以存储一种类型的数据,列表可以存储任意类型的数据

import array
array.array('i',range(10)) #i代表整数类型
array('i', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

a =array.array('i',range(10))
a[0]
0
a[0]=10
a
array('i', [10, 1, 2, 3, 4, 5, 6, 7, 8, 9])

1.数组转换成列表

a = array.array('i',range(10))
list1=list(a)

2.列表转换成数组

list2=list(range(10))
b = np.array(list2)

3.生成数组

#一维数组
a = np.zeros(10)
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
type(a)
<class 'numpy.ndarray'>
a.dtype
dtype('float64')


np.zeros(10,int)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
b = np.zeros(10,int)
b.dtype
dtype('int32')
#多维数组,比如矩阵
c=np.zeros((4,4),int)
c
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]])

d=np.ones((4,4),int)
d
array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]])

e=np.full((4,4),3.14)
e
array([[3.14, 3.14, 3.14, 3.14],
       [3.14, 3.14, 3.14, 3.14],
       [3.14, 3.14, 3.14, 3.14],
       [3.14, 3.14, 3.14, 3.14]])


f=np.zeros_like(c)
h=np.ones_like(c)
f
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]])
h
array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]])

i=np.full_like(c,3)
i
array([[3, 3, 3, 3],
       [3, 3, 3, 3],
       [3, 3, 3, 3],
       [3, 3, 3, 3]])

4.随机数random

#生成随机数
random.randint(1,10)
random.random()

#numpy.random
a= np.random.random((3,3))
a
array([[0.29769585, 0.87180424, 0.44915006],
       [0.65561664, 0.15132184, 0.61796125],
       [0.22334261, 0.5531065 , 0.26790481]])
b= np.random.randint(1,10,(3,3))
b
array([[6, 9, 5],
       [9, 8, 5],
       [9, 5, 3]])

5.范围取值range

range(1,10)
range(1, 10)
list(range(1,10))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

#numpy.arange
a=np.arange(0,10,2)
a
array([0, 2, 4, 6, 8])
#numpy.linespace 步长取数
a=np.linspace(0,5,10)
a
array([0.        , 0.55555556, 1.11111111, 1.66666667, 2.22222222, 2.77777778, 3.33333333, 3.88888889, 4.44444444, 5.     ])
#numpy.eye 单位矩阵
a=np.eye(5)
a
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])

取值范围

Data type Description
bool Boolean(True or False)stored as a byte
int_ Default integer type(same as C long, normally either int64 or int32
intc Identical to C int(normally int64 or int32)
intp Integer used for indexing(same as C ssize_t, either int64 or int32)
int8 Byte(-128 to 127)
int16 Integer(-32758, 32767)
int32 Integer(-2147483648, 2147483647)
int64 Integer(-9223372036854775808, 9223372036854775807)
uint8 Unsigned Integer (0, 255)
uint16 Unsigned Integer (0, 65535)
uint32 Unsigned Integer (0,4294967295)
uint64 Unsigned Integer (0, 18446744073709551615)
float_ shorthand for float64
float16 半精度浮点数:符号位,5位整数位,10位小数位
float32 单精度浮点数:符号位,8位整数位,23位小数位
float64 双精度浮点数:符号位,11位整数位,32位小数位
complex_ shorthand for complex64
complex64 实部和虚部都是 float32
complex128 实部和虚部都是 float64

6.访问数组中的元素

嵌套列表的访问
list1=[[1,2,3],[3,4,5],[5,6,7]]
list1[0][0]
1
list1[0,0]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: list indices must be integers or slices, not tuple
数组中元素的访问
a=np.full((3,3),3.14,dtype=float)
a[0]
array([3.14, 3.14, 3.14])
a[0][0]
3.14
a=np.array(list1)
a
array([[1, 2, 3],
       [3, 4, 5],
       [5, 6, 7]])
a[-1][0]
5
a[0,0]
1
a[-1,0]
5
等价访问a[0][0],a[0,0]
取前两列,用列表访问的方式
a[:3,:2]
array([[1, 2],
       [3, 4],
       [5, 6]])


a[:2][:2] 不等价与a[:2,:2]
array([[1, 2, 3],
       [3, 4, 5]])

7.数组属性

a
array([[1, 2, 3],
       [3, 4, 5],
       [5, 6, 7]])
#维度
a.ndim
2
#形状
a.shape
(3, 3)
#数量
a.size
9
#类型
a.dtype
dtype('int32')
#每个元素占用字节数
a.itemsize
4
#占用总字节数
a.nbytes
36

7.数组的运算

一维数组 (+-*/)
a=np.array(range(10)) 等价于
a=np.array(list(range(10)))
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a+10
array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
二维数组(+-*/)
a=np.full((3,3),1.0)
a
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])
a+2
array([[3., 3., 3.],
       [3., 3., 3.],
       [3., 3., 3.]])
操作符 numpy函数 描述
+ np.add 加法(1+1=2)
np.subtract 减法(3-1=2)
* np.multiply 乘法(2*3=6)
/ np.divide 除法(3/2=1.5)
// np.floor_divide 取整除(3/2=1)
** np.power 幂方(3**2=9)
% np.mod 取余(5%3=2)
np.negative 负数(-2)
a=np.linspace(0,np.pi,5)
a
array([0.        , 0.78539816, 1.57079633, 2.35619449, 3.14159265])
b = np.sin(a)
b
array([0.00000000e+00, 7.07106781e-01, 1.00000000e+00, 7.07106781e-01, 1.22464680e-16])

8.统计运算

列表的运算
list1=[[1,2,3],[3,4,5],[5,6,7]]
sum(list1)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'list'
list2=[1,2,3,4,5,6]
sum(list2)
21
数组运算
a=np.full((3,3),1.0)
sum(a) 每一列求和
array([3., 3., 3.])
sum(sum(a))
9.0
a=np.array([[1,2],[3,4],[5,6]])
a
array([[1, 2],
       [3, 4],
       [5, 6]])
sum(a)
array([ 9, 12])
np.sum(a, axis=0)
array([ 9, 12])
按照行求和
np.sum(a, axis=1)
array([ 3,  7, 11])
求整个数组的和
np.sum(a)
21
np.max,np.minsum类似可以求整个数组也可以求行或者列

np.sum效率高
在这里插入图片描述

9.比较

a=np.array(range(10))
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a>3
array([False, False, False, False,  True,  True,  True,  True,  True, True])

np.all是指数组中所有的值都是True的时候返回True
np.all(a>-1)
True
np.all(a>0)
False

np.any任何一个为True就是True
操作符 函数
== np.equal
< np.less
> np.greater
!= np.not_equal
<= np.less_equal
>= np.greater_equal

9.变形

a=np.full((2,10),1,dtype=float)
a
a.reshape(10,2)
a.reshape(4,5)


a=np.random.randint(1,20,(3,4))
a
array([[ 8, 18,  2, 10],
       [19,  6, 15, 17],
       [17, 18, 16,  9]])
a.reshape(4,3)
array([[ 8, 18,  2],
       [10, 19,  6],
       [15, 17, 17],
       [18, 16,  9]])
a.reshape(2,6)
array([[ 8, 18,  2, 10, 19,  6],
       [15, 17, 17, 18, 16,  9]])
a.reshape(2,3)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-76-d3d8e5b27339> in <module>
----> 1 a.reshape(2,3)

ValueError: cannot reshape array of size 12 into shape (2,3)

10.排序

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

np.sort(a)
array([[2, 3, 5],
       [1, 4, 8],
       [2, 6, 7]])

a.sort(axis=1)

11.拼接

a=np.array([1,2,3])
b=np.array([[1,2,3],[4,5,6]])
np.concatenate([a,a,a])
array([1, 2, 3, 1, 2, 3, 1, 2, 3])
np.concatenate([b,b])
array([[1, 2, 3],
       [4, 5, 6],
       [1, 2, 3],
       [4, 5, 6]])
按照列去链接
array([[1, 2, 3, 1, 2, 3],
       [4, 5, 6, 4, 5, 6]])

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/140782.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!