栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

NumPy

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NumPy

文章目录
  • np.array
  • NumPy中的各种数据类型
  • np.zeros
  • np.unique
  • np.arange
  • np.linspace
    • endpoint
    • retstep
    • dtype
  • np.logspace
  • np.where
    • 形式一:判断
    • 形式二:修改
  • np.c_ && np.r_
    • np.c_
    • np.r_
  • 冒号的使用
  • np.mean
  • np.sum

np.array

就是创建一个数组。比如:

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

输出结果就是:
[ [ 1   2 ]   [ 3   4 ] ] [[1 2]\ [3 4]] [[1 2] [3 4]]
常见的还有两个参数

参数意义
d t y p e dtype dtype数据类型,可选参数,默认 n p . f l o a t 64 np.float64 np.float64
n d m i n ndmin ndmin最小维度。比如一维的也给你整成二维的。

里面 n d m i n ndmin ndmin不大好理解,举个例子。

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

输出结果为: [ [ 1   2   3   4 ] ] [[1 2 3 4]] [[1 2 3 4]]

NumPy中的各种数据类型
名称描述
b o o l _ bool_ bool_布尔型数据类型( T r u e True True 或者 F a l s e False False)
i n t _ int_ int_默认的整数类型(类似于 C C C语言中的 l o n g long long, i n t 32 int32 int32 或 i n t 64 int64 int64)
i n t c intc intc与 C C C 的 i n t int int 类型一样,一般是 i n t 32 int32 int32 或 i n t 64 int 64 int64
i n t p intp intp用于索引的整数类型(类似于 C C C 的 s s i z e _ t ssize_t ssize_t,一般情况下仍然是 i n t 32 int32 int32 或 i n t 64 int64 int64)
i n t 8 int8 int8字节( − 128 -128 −128 t o to to 127 127 127)
i n t 16 int16 int16整数( − 32768 -32768 −32768 t o to to 32767 32767 32767)
i n t 32 int32 int32整数( − 2147483648 -2147483648 −2147483648 t o to to 2147483647 2147483647 2147483647)
i n t 64 int64 int64整数( − 9223372036854775808 -9223372036854775808 −9223372036854775808 t o to to 9223372036854775807 9223372036854775807 9223372036854775807)
u i n t 8 uint8 uint8无符号整数( 0 0 0 t o to to 255 255 255)
u i n t 16 uint16 uint16无符号整数( 0 0 0 t o to to 65535 65535 65535)
u i n t 32 uint32 uint32无符号整数( 0 0 0 t o to to 4294967295 4294967295 4294967295)
u i n t 64 uint64 uint64无符号整数( 0 0 0 t o to to 18446744073709551615 18446744073709551615 18446744073709551615)
f l o a t _ float_ float_ f l o a t 64 float64 float64 类型的简写
f l o a t 16 float16 float16半精度浮点数,包括: 1 1 1 个符号位, 5 5 5 个指数位, 10 10 10 个尾数位
f l o a t 32 float32 float32单精度浮点数,包括: 1 1 1 个符号位, 8 8 8 个指数位, 23 23 23 个尾数位
f l o a t 64 float64 float64双精度浮点数,包括: 1 1 1 个符号位, 11 11 11 个指数位, 52 52 52 个尾数位
c o m p l e x _ complex_ complex_ c o m p l e x 128 complex128 complex128 类型的简写,即 128 128 128 位复数
c o m p l e x 64 complex64 complex64复数,表示双 32 32 32 位浮点数(实数部分和虚数部分)
c o m p l e x 128 complex128 complex128复数,表示双 64 64 64 位浮点数(实数部分和虚数部分)
np.zeros

就是产生一个全为 0 0 0的数组。一般的格式如下:

zeros(shape, dtype=float, order=‘C’)
参数意义
s h a p e shape shape形状
d t y p e dtype dtype数据类型,可选参数,默认 n p . f l o a t 64 np.float64 np.float64
o r d e r order order可选参数, c c c代表与 c c c语言类似,行优先; F F F代表列优先

举例来说:

import numpy as np
np.zeros((2,5), dtype = np.int))

输出结果为:
[ [ 0    0    0    0    0 ]   [ 0    0    0    0    0 ] ] [[0 0 0 0 0] \ [0 0 0 0 0]] [[0  0  0  0  0] [0  0  0  0  0]]

np.unique

这个函数的意思就是去除数组里的重复元素,然后排序后输出。举例来说就是:

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

输出结果就是: [ 1    2    3 ] [1 2 3] [1  2  3]

值得注意的是:即使是多维数组,在执行这条之后也会变成一维数组。

np.arange

产生一个数列。函数格式如下:

import numpy as np
np.arange(start, stop, step, dtype)
参数描述
s t a r t start start起始值,默认为 0 0 0
s t o p stop stop终止值(不包含)
s t e p step step步长,默认为 1 1 1
d t y p e dtype dtype返回 n d a r r a y ndarray ndarray的数据类型,如果没有提供,则会使用输入数据的类型。

例如:

x = np.arange(5)  
print (x)

输出为: [ 0    1    2    3    4 ] [0 1 2 3 4] [0  1  2  3  4]

x = np.arange(10, 20, 2)  
print (x)

输出为: [ 10    12    14    16    18 ] [10 12 14 16 18] [10  12  14  16  18]

np.linspace

这是一个产生等差数列的函数。一般的格式如下:

array = np.linspace(start, end, num = num_points)

也就是确定了等差数列的起点、终点以及产生多少个数据。如果我们这么输入:

import numpy as np
array = np.linspace(0, 10, num = 5)
print(array)

那么所产生的数组就会是: [ 0 ,   2.5 ,   5 ,   7.5 ,   1 ] [0, 2.5, 5, 7.5, 1] [0, 2.5, 5, 7.5, 1]

当然,还有一些其他的常用的可选参数。

endpoint

这个参数的取值是 b o o l bool bool类型的,默认为 T r u e True True。如果设为 F a l s e False False,那么所生成的等差数列就是不会包括 s t o p stop stop的。比如:

import numpy as np
array = np.linspace(0, 10, num = 5, endpoint=False)
print(array)

那么所产生的数组就会是: [ 0 ,   2 ,   4 ,   6 ,   8 ] [0, 2, 4, 6, 8] [0, 2, 4, 6, 8]

简单理解一下,这个的意思就是让 n u m = 6 num=6 num=6,然后把最后一个数字去掉。

retstep

这个参数同样也是 b o o l bool bool类型的,默认为 F a l s e False False。如果设为 T r u e True True,那么就会在输出结果后面带上步长。比如:

import numpy as np
array = np.linspace(0, 10, num = 5, retstep=True)
print(array)

那么所产生的结果就会是: ( a r r a y ( [ 0. ,   2.5 ,   5. ,   7.5 ,   10. ] ) , 2.5 ) (array([ 0. , 2.5, 5. , 7.5, 10. ]), 2.5) (array([0., 2.5, 5., 7.5, 10.]),2.5)

dtype

没啥好说的,就是很简单的设置数组的类型。

np.logspace

这是一个产生等比数列的函数。一般的格式如下:

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

b a s e base base 参数意思是取对数的时候 l o g log log 的下标。

参数描述
s t a r t start start序列的起始值为: b a s e s t a r t base^{start} basestart
s t o p stop stop序列的终止值为: b a s e s t o p base^{stop} basestop。如果 e n d p o i n t endpoint endpoint为 t r u e true true,该值包含于数列中
n u m num num要生成的等步长的样本数量,默认为 50 50 50
e n d p o i n t endpoint endpoint该值为 t r u e true true 时,数列中中包含 s t o p stop stop值,反之不包含,默认是 T r u e True True。
b a s e base base对数 l o g log log 的底数。
d t y p e dtype dtype n d a r r a y ndarray ndarray 的数据类型
np.where

这就是一个条件语句。一般来说有两种形式。

形式一:判断

判断是否符合条件要求,会返回索引。

import numpy as np 
x = np.arange(9.).reshape(3,  3)  
print ('我们的数组是:')
print (x)
print ( '大于 3 的元素的索引:')
y = np.where(x > 3)  
print (y)
print ('使用这些索引来获取满足条件的元素:')
print (x[y])

输出结果为:

我们的数组是:
[[0. 1. 2.]
 [3. 4. 5.]
 [6. 7. 8.]]
大于 3 的元素的索引:
(array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2]))
使用这些索引来获取满足条件的元素:
[4. 5. 6. 7. 8.]

两个数组就表示坐标,一个表示第几行,一个表示第几列。

形式二:修改
import numpy as np
a = np.array([[1, 2, 3], [4, 5, -1], [-2, 1, -3]])
b = np.where(a > 0, a, 0)
print(b)

输出结果为:
[ [ 1 ,   2 ,   3 ] ,   [ 4 ,   5 ,   0 ] ,   [ 0 ,   1 ,   0 ] ] [[1, 2, 3],\ [4, 5, 0], \ [0, 1, 0]] [[1, 2, 3], [4, 5, 0], [0, 1, 0]]

np.c_ && np.r_

这两个的主要作用就是合并,而且这俩对于一维和二维数组的作用是不一样的。

np.c_

在对象是一维数组的时候,它会把横着的数组竖过来然后合并起来。具体来说就是像这样的:

数组A: [ 1 ,   2 ,   3 ,   4 ,   5 ] [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
数组B: [ 6 ,   7 ,   8 ,   9 ,   10 ] [6, 7, 8, 9, 10] [6, 7, 8, 9, 10]

在两个数组合并后所得到的数组就是:
[ [ 1 ,   6 ] ,   [ 2 ,   7 ] ,   [ 3 ,   8 ] ,   [ 4 ,   9 ] ,   [ 5 ,   10 ] ] [[1, 6], \ [2, 7], \ [3, 8], \ [4, 9], \ [5, 10]] [[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]]

而当对象是二维数组时,例如:

数组A:
[ [ 1 ,   2 ,   3 ] ,   [ 4 ,   5 ,   6 ] ] [[1, 2, 3], \ [4, 5, 6]] [[1, 2, 3], [4, 5, 6]]
数组B:
[ [ 4 ,   5 ,   6 ] ,   [ 7 ,   8 ,   9 ] ] [[4, 5, 6], \ [7, 8, 9]] [[4, 5, 6], [7, 8, 9]]

那么两个数组合并之后就会得到:
[ [ 1 ,   2 ,   3 ,   4 ,   5 ,   6 ] ,   [ 4 ,   5 ,   6 ,   7 ,   8 ,   9 ] ] [[1, 2, 3, 4, 5, 6], \ [4, 5, 6, 7, 8, 9]] [[1, 2, 3, 4, 5, 6], [4, 5, 6, 7, 8, 9]]

np.r_

在对象是一维数组的时候,就是会连成一个贼长的一维数组。比如:

数组A: [ 1 ,   2 ,   3 ,   4 ,   5 ] [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
数组B: [ 6 ,   7 ,   8 ,   9 ,   10 ] [6, 7, 8, 9, 10] [6, 7, 8, 9, 10]

在两个数组合并后所得到的数组就是:
[ 1 ,   2 ,   3 ,   4 ,   5 ,   6 ,   7 ,   8 ,   9 ,   10 ] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

而对象是二维数组的时候,就会是:

数组A:
[ [ 1 ,   2 ,   3 ] ,   [ 4 ,   5 ,   6 ] ] [[1, 2, 3], \ [4, 5, 6]] [[1, 2, 3], [4, 5, 6]]
数组B:
[ [ 4 ,   5 ,   6 ] ,   [ 7 ,   8 ,   9 ] ] [[4, 5, 6], \ [7, 8, 9]] [[4, 5, 6], [7, 8, 9]]

那么两个数组合并之后就会得到:
[ [ 1 ,   2 ,   3 ] ,   [ 4 ,   5 ,   6 ] ,   [ 4 ,   5 ,   6 ] ,   [ 7 ,   8 ,   9 ] ] [[1, 2, 3], \ [4, 5, 6], \ [4, 5, 6],\ [7, 8, 9]] [[1, 2, 3], [4, 5, 6], [4, 5, 6], [7, 8, 9]]

冒号的使用

以二维数组为例。
a r r a y [ a : b , c : d ] array[a:b,c:d] array[a:b,c:d]
就是选中 a r r a y array array数组的 a a a到 b − 1 b-1 b−1行以及 c c c到 d − 1 d-1 d−1列。

np.mean

是用来求平均值的。

import numpy as np
ids = np.array([1, 2, 3, 4])
print(np.mean(ids))

输出的结果就是 2.5 2.5 2.5

如果是矩阵的话,可以加 a x i s axis axis参数:

a x i s = 0 axis=0 axis=0时,计算每一列的平均值
a x i s = 1 axis=1 axis=1时,计算每一行的平均值

np.sum

求和。和上一个 n p . m e a n np.mean np.mean一模一样,参数都一样,实在是懒得写了。

就这样吧。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/928830.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号