当前位置:   article > 正文

numpy基本用法介绍

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
  • 1
  • 2
a=[1,2,3,4,5,6,7,8,9]
print(a)
  • 1
  • 2

输出

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

输出

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

输出
<class ‘list’>

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

输出

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

输出

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

输出
<class ‘numpy.ndarray’>

A*2
  • 1

输出

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

输出

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

输出

<class 'numpy.ndarray'>
  • 1
b*6
  • 1

在这里插入图片描述

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

输出

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

 - List item

  • 1
  • 2
  • 3
  • 4

输出

<class 'numpy.ndarray'>
  • 1
c*2
  • 1

输出

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

输出

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

输出

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

输出

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

输出

6
  • 1
print(c.dtype)#类型
  • 1

输出

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

输出

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

输出

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

输出

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

输出

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

输出

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

输出

dtype('int32')
  • 1
type(e)
  • 1

输出

numpy.ndarray
  • 1
print(e)
  • 1

输出

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

输出

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

输出

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

输出

<memory at 0x000002643059E6D8>
  • 1
f.flat
  • 1

输出

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

输出

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

输出

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

输出

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

输出

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

输出

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

输出

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

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

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

x=np.arange(10)
print(type(x))
print(x)
  • 1
  • 2
  • 3

输出

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

输出

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

输出

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

输出

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

输出

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

输出

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

输出

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

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

np.logspace(0,2,20)
  • 1

输出

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.        ])
  • 1
  • 2
  • 3
  • 4
  • 5
np.linspace(0,2,20)
  • 1

输出

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.        ])
  • 1
  • 2
  • 3
  • 4

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

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

输出

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

输出

5
  • 1
a[3:5]
  • 1

输出

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

输出

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

输出

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

输出

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

输出

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

输出

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

输出

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

输出

True
  • 1
id(a)
id(b)
  • 1
  • 2

输出

2048392233008
  • 1
a==b
  • 1

输出

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

输出

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

输出

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

输出

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

输出

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

浅拷贝

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

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

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

深拷贝

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

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

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

View 视图

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

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

输出

2048392236448
  • 1
id(f)
  • 1

输出

2048392355888
  • 1
f.shape=(2,3)
  • 1
f
  • 1

输出

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

输出

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

输出

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

输出

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

输出

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

输出

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

输出

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

输出

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

输出

2048392236448
  • 1
id(g)
  • 1

输出

2048392358848
  • 1

在这里插入图片描述

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

输出

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

输出

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

输出

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

输出

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

输出

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

  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/620088
推荐阅读
相关标签
  

闽ICP备14008679号