NumPy 基本语法汇总

NumPy 数据结构属性以及数组创建

NumpyPython科学计算库,用于快速处理任意维度的数组,可以处理N维数组, 支持向量化运算,其底层是由C语言编写的,运算速度相比较PYTHON会非常快, 这也是大数据常用numpy来计算的原因,其对数组的操作速度不受python解释器的影响。

----首先先试一下用numpy和python实现1+2+3+......+1亿的运算时间----


8
import numpy as np
import time
arr = np.arange(100000000)
print('*'*30)
%time np.sum(arr)
print('*'*30)
%time sum(arr)


******************************
Wall time: 39.9 ms
******************************
Wall time: 9.37 s

<timed eval>:1: RuntimeWarning: overflow encountered in long_scalars

8
887459712

1、 ndarray属性

属性描述
ndarray.shape数组维度的元组
ndarray.ndim数组维数
ndarray.size数组中的元素数量
ndarray.itemsize一个数组元素的长度(字节)
ndarray.dtype数组元素的类型

9
import numpy as np
a = np.array([1,2,3])
b = np.array([[1,2,3],[4,5,6]])
c = np.array([[[1,2],[3,4]], [[5,6],[7,8]]])
print('*'*30)
print('a的数据维度是:',a.shape) #数组的维度的元组,当数组是一维时候,表示有几列
print('b的数据维度是:',b.shape) #两行三列
print('c的数据维度是:',c.shape) #三行三列
print('上面三个数组的维度分别是:',a.ndim,b.ndim,c.ndim)
print('上面三个数组的元素个数分别是:',a.size,b.size,c.size)
print(c.dtype) #数组的类型

******************************
a的数据维度是: (3,)
b的数据维度是: (2, 3)
c的数据维度是: (2, 2, 2)
上面三个数组的维度分别是: 1 2 3
上面三个数组的元素个数分别是: 3 6 8
int32


2、ndarray元素数据类型

ndarray.dtype查看数组元素的数据类型,NumPy支持比Python更多的数值类型,得益于它本身还是有C语言编写。

数据类型描述唯一标识符
bool用一个字节存储的布尔类型(True或False)'b'
int8一个字节大小,-128 至 127'i'
int16整数,16 位整数(-32768 ~ 32767)'i2'
int32整数,32 位整数(-2147483648 ~ 2147483647)'i4'
int64整数,64 位整数(-9223372036854775808 ~ 9223372036854775807)'i8'
uint8无符号整数,0 至 255'u'
uint16无符号整数,0 至 65535'u2'
uint32无符号整数,0 至 2 ** 32 - 1'u4'
uint64无符号整数,0 至 2 ** 64 - 1'u8'
float16半精度浮点数:16位,正负号1位,指数5位,精度10位'f2'
float32单精度浮点数:32位,正负号1位,指数8位,精度23位'f4'
float64双精度浮点数:64位,正负号1位,指数11位,精度52位'f8'
complex64复数,分别用两个32位浮点数表示实部和虚部'c8'
complex128复数,分别用两个64位浮点数表示实部和虚部'c16'
object_python对象'O'
string_字符串'S'
unicode_unicode类型'U'

3、ndarray创建结构化数据类型


10
import numpy as np
dt = np.dtype([('name','S20'), ('price', 'f4'),
                  ('weight', 'i1')])
nd = np.array([('meat', 15.6, 2),('apple', 6, 2)],dtype=dt)
print(nd)


[(b'meat', 15.6, 2) (b'apple',  6. , 2)]


4、ndarray数组的创建

  1. 从其他Python结构转换(例如:列表,元组)使用array(深拷贝),asarray(浅拷贝)方法
  2. 内在的numpy数组创建对象arange,zeros,ones......等
  3. 通过使用字符串或缓冲区从原始字节创建数组
  4. 使用特殊库函数random,

11
#从python列表结构转换,
import numpy as np
a = [1,2,3,4,5,6]
print(np.array(a))

[1 2 3 4 5 6]


12
#内在的numpy数组创建对象arange,np.arange(start,stop,step,dtype)
import numpy as np
a = np.arange(10)
b = np.zeros(10)
c = np.ones(10)
d = np.full((3,2),7)#构造3行两列的数组,指定填充数为7
print(a,b,c,d,sep='\n**************\n')

[0 1 2 3 4 5 6 7 8 9]
**************
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
**************
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
**************
[[7 7]
 [7 7]
 [7 7]]


13
#使用特殊库函数random(重要)根据给定的维度生成**[0, 1)**之间的随机数
import numpy as np
a = np.random.random() #创建一个随机数0-1之间
b = np.random.random(10) #创建一个一维的列表数组,0-1之间
c = np.random.random((5,2)) #创建一个二维数组10行2列,0-1之间
print(a,b,c,sep='\n**************\n')

0.9138248243834629
**************
[0.22414865 0.29108704 0.95452629 0.66855175 0.00150192 0.51841556
 0.50442709 0.74724399 0.00856524 0.3938695 ]
**************
[[0.32686679 0.14522227]
 [0.26809541 0.85052332]
 [0.53518224 0.62633159]
 [0.31946848 0.1022813 ]
 [0.70060205 0.31761763]]


14
#特殊函数ramdom的补充,randint
#np.random.randint(low,high=None,size=None,dtype='l')`:生成取值区间为[low, high)的随机整数,size:数组维度大小,dtype:np.int
a = np.random.randint(3,size=3) #生成3个[0,3)之间的整数
b = np.random.randint(3,5) #size=None,生成一个[1,5)之间随机的一个整数
c = np.random.randint(1,5,size=(3,2)) #生成一个二维数组
print(a,b,c,sep='\n**************\n')


[0 0 0]
**************
3
**************
[[3 4]
 [1 1]
 [2 4]]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值