numpy基本用法介绍

numpy基本用法介绍

在这里插入图片描述

Numpy的介绍

NumPy 是 Python 语言的一个第三方库,其支持大量高维度数组与矩阵运算。
是一个开源的python科学计算库,它代表 “Numeric Python”。
它是一个由多维数组对象和用于处理数组的例程集合组成的库。
NumPy 也针对数组运算提供大量的数学函数。机器学习涉及到大量对数组的变换和运算,
NumPy 就成了必不可少的工具之一。
Numpy还包括了许多数学函数,线代、随机数生成等
Numpy可以取代一些数学软件
Python + Numpy == Matlab
NumPy - Ndarray 对象
NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型。 它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。

构造器如下:
numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)

ndarray(N-dimensional array)

ndarray是整个numpy的基础,是N-demensional array的缩写,是一种由同质元素组成的多维数组。每个ndarray只要一种dtype类型。

#导入numpy 
import numpy as np
a=[1,2,3,4,5,6,7,8,9]
print(a)

输出

[1, 2, 3, 4, 5, 6, 7, 8, 9]
a*2

输出

[1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(type(a))

输出
<class ‘list’>

#把普通的python中的list转换成ndarray
A=np.array(a)
print(A)

输出

[1 2 3 4 5 6 7 8 9]
A

输出

array([1, 2, 3, 4, 5, 6, 7, 8, 9])
print(type(A))

输出
<class ‘numpy.ndarray’>

A*2

输出

array([ 2,  4,  6,  8, 10, 12, 14, 16, 18])
#直接创建一维数组
b=np.array([1,2,3,4,5])
print(b)

输出

[1 2 3 4 5]
print(type(b))

输出

<class 'numpy.ndarray'>
b*6

在这里插入图片描述

array([ 6, 12, 18, 24, 30])
#创建多维数组
c=np.array([[1,2,3],[4,5,6]])
print(c)

输出

[[1 2 3]
 [4 5 6]]
print(type(c))

 - List item

输出

<class 'numpy.ndarray'>
c*2

输出

array([[ 2,  4,  6],
       [ 8, 10, 12]])
cc=[[1,2,3],[4,5,6]]
cc*2

输出

[[1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]]
print(c.ndim)#几维

输出

2
print(c.shape)#几行几列

输出

(2, 3)
print(c.size)#包含元素

输出

6
print(c.dtype)#类型

输出

int32
d=np.array([[[1,2,3],[4,5,6],[7,8,9]]])
print(d)
print(d.ndim)

输出

[[[1 2 3]
  [4 5 6]
  [7 8 9]]]
3
print(d.shape)

输出

(1, 3, 3)
print(d.size)

输出

9
dd=np.array([[[1,2,3],[4,5,6],[7,8,9]],[[1,2,3],[4,5,6],[7,8,9]]])
print(dd.shape)

输出

(2, 3, 3)
print(dd.size)

输出

18
#指定维度来创建多维数组
e=np.array([1,2,3,4,5,6],ndmin=3)
e.dtype

输出

dtype('int32')
type(e)

输出

numpy.ndarray
print(e)

输出

[[[1 2 3 4 5 6]]]
print(e.shape)

输出

(1, 1, 6)
#指定维度和数值类型来创建多维数组
f = np.array([1,2,3,4,5,6],ndmin=3,dtype=np.complex)
print(f)

输出

[[[1.+0.j 2.+0.j 3.+0.j 4.+0.j 5.+0.j 6.+0.j]]]
f.data

输出

<memory at 0x000002643059E6D8>
f.flat

输出

<numpy.flatiter at 0x26478a91010>
print(f.itemsize)

输出

16
a=np.empty([3,2],dtype=np.int32)
a

输出

array([[618914272,       565],
       [        0,         0],
       [        1,         0]])
print(a.shape)

输出

(3, 2)
# numpy.eye  函数返回对角线为1,其余为0的数组
d=np.eye(5)
print(d)

输出

[[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.]]
#array与asarray区别 传入参数是list等一般数组类型是,两者没有区别;当传入参数是ndarray类型时,前者会拷贝原数据,开辟新的内存在储存它,就是新建了一个ndarray对象。而asarray与原参数共享一个内存
x=[1,2,3,4,5,6]
a=np.asarray(x)
print(type(x))
print(type(a))

输出

<class 'list'>
<class 'numpy.ndarray'>
print(x)
print(a)

输出

[1, 2, 3, 4, 5, 6]
[1 2 3 4 5 6]

arange函数类似于python的range函数,通过指定开始值、终值和步长来创建一维数组,注意数组不包括终值

linspace函数通过指定开始值、终值和元素个数来创建一维数组可以通过endpoint关键字指定是否包括终值,缺省设置是包括终值

x=np.arange(10)
print(type(x))
print(x)

输出

<class 'numpy.ndarray'>
[0 1 2 3 4 5 6 7 8 9]
x=np.arange(10,dtype=np.float32)
print(x)

输出

[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
x=np.linspace(10,20,5)
print(x)

输出

[10.  12.5 15.  17.5 20. ]
#retstep=True 返回步长值
np.linspace(10,20,5,retstep=True)

输出

(array([10. , 12.5, 15. , 17.5, 20. ]), 2.5)
np.linspace(0, 1, 10)

输出

array([0.        , 0.11111111, 0.22222222, 0.33333333, 0.44444444,
       0.55555556, 0.66666667, 0.77777778, 0.88888889, 1.        ])
np.linspace(0,1,10,endpoint=False)

输出

array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
np.linspace(0.1,1.1,10,endpoint=False)

输出

array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])

logspace函数和linspace类似,不过它创建等比数列

np.logspace(0,2,20)

输出

array([  1.        ,   1.27427499,   1.62377674,   2.06913808,
         2.6366509 ,   3.35981829,   4.2813324 ,   5.45559478,
         6.95192796,   8.8586679 ,  11.28837892,  14.38449888,
        18.32980711,  23.35721469,  29.76351442,  37.92690191,
        48.32930239,  61.58482111,  78.47599704, 100.        ])
np.linspace(0,2,20)

输出

array([0.        , 0.10526316, 0.21052632, 0.31578947, 0.42105263,
       0.52631579, 0.63157895, 0.73684211, 0.84210526, 0.94736842,
       1.05263158, 1.15789474, 1.26315789, 1.36842105, 1.47368421,
       1.57894737, 1.68421053, 1.78947368, 1.89473684, 2.        ])

在这里插入图片描述
在这里插入图片描述

a=np.arange(10)
a

输出

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a[5]

输出

5
a[3:5]

输出

array([3, 4])
a[:5]

输出

array([0, 1, 2, 3, 4])
a[:-1]

输出

array([0, 1, 2, 3, 4, 5, 6, 7, 8])
a[2:4]=100,101
a

输出

array([  0,   1, 100, 101,   4,   5,   6,   7,   8,   9])
print(a[1:-1:2])

输出

[  1 101   5   7]
b=a[3:7]
b

输出

array([101,   4,   5,   6])
b[2]=-10
b

输出

array([101,   4, -10,   6])
a=np.array([-45,-66,2,25,99,-33])
b=a
b is a

输出

True
id(a)
id(b)

输出

2048392233008
a==b

输出

array([ True,  True,  True,  True,  True,  True])
a[0]=6
a

输出

array([  6, -66,   2,  25,  99, -33])
b

输出

array([  6, -66,   2,  25,  99, -33])
b[0]=2
a

输出

array([  2, -66,   2,  25,  99, -33])
b

输出

array([  2, -66,   2,  25,  99, -33])
e=np.array([-45,-66,2,25,99,-33])

浅拷贝

定义:浅拷贝是对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值。

注:仅仅拷贝的是目标变量的所在地址,目标变量的所在地址不发生任何变化。

公用一个值;
这两个变量的内存地址一样;
对其中一个变量的值改变,另外一个变量的值也会改变;

深拷贝

定义:一个变量对另外一个变量的值拷贝。

注:拷贝的是目标变量的值,是真实的拷贝,新的变量产生了新的内存地址。

变量的内存地址不同;
变量各有自己的值,且互不影响;
对其任意一个变量的值的改变不会影响其余变量的值

View 视图

view相当于传引用,view和原始数据共享一份数据,修改一个会影响另一个。
slice,array.view(dtype)可以产生view,但array.astype(dtype)产生的不是view

f=e.view()#浅拷贝
id(e)

输出

2048392236448
id(f)

输出

2048392355888
f.shape=(2,3)
f

输出

array([[-45, -66,   2],
       [ 25,  99, -33]])
e[0]=0
e

输出

array([  0, -66,   2,  25,  99, -33])
f

输出

array([[  0, -66,   2],
       [ 25,  99, -33]])
f[1,1]=88
f

输出

array([[  0, -66,   2],
       [ 25,  88, -33]])
e

输出

array([  0, -66,   2,  25,  88, -33])
g=np.copy(e)#深拷贝
g

输出

array([  0, -66,   2,  25,  88, -33])
e[0]=8
e

输出

array([  8, -66,   2,  25,  88, -33])
g

输出

array([  0, -66,   2,  25,  88, -33])
id(e)

输出

2048392236448
id(g)

输出

2048392358848

在这里插入图片描述

x=np.arange(5,0,-1)
x

输出

array([5, 4, 3, 2, 1])
x[np.array([True,False,True,False,False])]

输出

array([5, 3])
#布尔数组中下标为0,2的元素为True,因此获取X中下标为0,2的元素
x[np.array([True,False,True,True,False])]=-1,-2,-3
x

输出

array([-1,  4, -2, -3,  1])
#产生一个长度为10,元素值为0-1的随机数的数组
x=np.random.rand(10)
x

输出

array([0.19587602, 0.05381538, 0.58195263, 0.53318967, 0.38403005,
       0.56208597, 0.60598911, 0.96842994, 0.70864445, 0.59090746])
x[x>0.5]

输出

array([0.58195263, 0.53318967, 0.56208597, 0.60598911, 0.96842994,
       0.70864445, 0.59090746])

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值