实验环境
Python 3.6
Jupyter
实验代码
import numpy as np
a = np.arange(15).reshape(3,5)
a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
a.shape
(3, 5)
a.ndim
2
a.dtype.name
'int32'
a.itemsize
4
type(a)
numpy.ndarray
array():将列表、元组转化成ndarray,使用array创建数组,数组的类型是由列表中元素的类型决定。
a = np.array([2,3,4])a
array([2, 3, 4])
a.dtype
dtype('int32')
b = np.array([1.2,3.5,5.1])
b
array([1.2, 3.5, 5.1])
b.dtype
dtype('float64')
array1 = np.array(((1,2,3),(2,3,4)))
array1
array([[1, 2, 3],
[2, 3, 4]])
c = np.array([[1,2,3],[1.2,3.5,6]],dtype = np.float64)
c
array([[1. , 2. , 3. ],
[1.2, 3.5, 6. ]])
array_zeros = np.zeros((3,4))array_zeros
array([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]])
array_ones = np.ones((2,3,4))array_ones
array([[[1., 1., 1., 1.], [1., 1., 1., 1.], [1., 1., 1., 1.]], [[1., 1., 1., 1.], [1., 1., 1., 1.], [1., 1., 1., 1.]]])
array_empty = np.empty((2,3)) array_empty
array([[1. , 2. , 3. ], [1.2, 3.5, 6. ]])
array_arange=np.arange(10,30,5)array_arange
array([10, 15, 20, 25])
array_linspace = np.linspace(0,2,9)array_linspace
array([0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
x = [1,2,3]a = np.asanyarray(x,dtype = np.float64)a
array([1., 2., 3.])
这个函数和之前的区别在于,这个只能创建方阵,也就是N=M
函数的原型:np.identity(n,dtype=None)
参数:n,int型表示的是输出的矩阵的行数和列数都是n
dtype:表示的是输出的类型,默认是float
返回的是nxn的主对角线为1,其余地方为0的数组
array_identity = np.identity(3)array_identity
array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]])
array_identity.ndim
2
函数的原型:numpy.eye(N,M=None,k=0,dtype=
返回的是一个二维2的数组(N,M),对角线的地方为1,其余的地方为0.
参数介绍:
(1)N:int型,表示的是输出的行数
(2)M:int型,可选项,输出的列数,如果没有就默认为N
(3)k:int型,可选项,对角线的下标,默认为0表示的是主对角线,负数表示的是低对角,正数表示的是高对角。
(4)dtype:数据的类型,可选项,返回的数据的数据类型
(5)order:{‘C’,‘F’},可选项,也就是输出的数组的形式是按照C语言的行优先’C’,还是按照Fortran形式的列优先‘F’存储在内存中
a = np.eye(3)a
array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]])
b = np.eye(3,k=1)b
array([[0., 1., 0.], [0., 0., 1.], [0., 0., 0.]])
c = np.eye(3,k=-1)c
array([[0., 0., 0.],
[1., 0., 0.],
[0., 1., 0.]])
array_diag = np.diag([1,2,3])
array_diag
array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])
array_randint = np.random.randint(0,50,5)
array_randint
array([21, 19, 41, 47, 17])
array_randint2 = np.random.randint(0,50,(3,5))
array_randint2
array([[47, 47, 8, 44, 40], [40, 9, 30, 32, 8], [29, 27, 16, 30, 45]])
array_rand = np.random.rand(10)array_rand
array([0.17349901, 0.79770357, 0.49589733, 0.27765088, 0.48102378, 0.31433779, 0.49579309, 0.78099342, 0.60287197, 0.40863683])
array_standard_normal = np.random.standard_normal(5)array_standard_normal
array([ 1.14664279, 1.16465956, -0.0302402 , 1.47208368, -0.00533638])
arr2 = np.random.standard_normal(size = (3,4,2))
arr2
array([[[ 1.18635502, -0.22768332],
[-0.17322923, -1.64753943],
[ 0.78037571, -0.03175083],
[-1.91916739, 1.79037994]],
[[ 0.61313302, 1.66755059],
[-0.63485406, 0.20376679],
[ 0.49881433, 0.55063801],
[ 1.09693164, 2.13867619]],
[[-0.93612589, 0.81342552],
[-0.03872706, -0.54880053],
[ 0.64529897, -0.89777152],
[ 0.16477402, 0.66994561]]])
array1 = np.array([[[0,1,2,3],[4,5,6,7],[8,9,10,11]],[[12,13,14,15],[16,17,18,19],[20,21,22,23]]])
array1
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
array1.ravel()
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])
array1 = np.array([[[0,1,2,3],[4,5,6,7],[8,9,10,11]],[[12,13,14,15],[16,17,18,19],[20,21,22,23]]])
array1
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
array1.flatten()
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
array1 = np.array([[[0,1,2,3],[4,5,6,7],[8,9,10,11]],[[12,13,14,15],[16,17,18,19],[20,21,22,23]]])
array1
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
array1.shape = (6,4)
array1
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
array1=np.array([[[0,1,2,3],[4,5,6,7],[8,9,10,11]],[[12,13,14,15],[16,17,18,19],[20,21,22,23]]])
array1
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
array2 = array1.reshape(6,4)
array2
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
array1
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
array1=np.array([[1,2,3],[4,5,6]]) array1.resize((3,2)) array1
array([[1, 2], [3, 4], [5, 6]])
x=np.arange(8)
x
array([0, 1, 2, 3, 4, 5, 6, 7])
a = np.append(x,8)
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
x
array([0, 1, 2, 3, 4, 5, 6, 7])
x=np.arange(8) x
array([0, 1, 2, 3, 4, 5, 6, 7])
x[3]=8 x
array([0, 1, 2, 8, 4, 5, 6, 7])
x=np.arange(1,10).reshape(3,3) x
array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
x[0,2]=4
x[1,2]=4
x
array([[1, 2, 4],
[4, 5, 4],
[7, 8, 9]])
x=np.arange(8)
x
array([0, 1, 2, 3, 4, 5, 6, 7])
a = np.insert(x,1,9)a
array([0, 9, 1, 2, 3, 4, 5, 6, 7])
x = np.arange(8)x.repeat(2)
array([0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7])
x = np.arange(8)x
array([0, 1, 2, 3, 4, 5, 6, 7])
x.put(0,9)x
array([9, 1, 2, 3, 4, 5, 6, 7])
x=np.array([1,2,3,4,5]) x
array([1, 2, 3, 4, 5])
x*2
array([ 2, 4, 6, 8, 10])
x/2
array([0.5, 1. , 1.5, 2. , 2.5])
x//2
array([0, 1, 1, 2, 2], dtype=int32)
x**3
array([ 1, 8, 27, 64, 125], dtype=int32)
x+2
array([3, 4, 5, 6, 7])
x%3
array([1, 2, 0, 1, 2], dtype=int32)
2**x
array([ 2, 4, 8, 16, 32], dtype=int32)
2/x
array([2. , 1. , 0.66666667, 0.5 , 0.4 ])
63//x
array([63, 31, 21, 15, 12], dtype=int32)
a=np.array((1,2,3))
a
array([1, 2, 3])
b=np.array(([1,2,3],[4,5,6],[7,8,9])) b
array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
c = a*bc
array([[ 1, 4, 9], [ 4, 10, 18], [ 7, 16, 27]])
c/b
array([[1., 2., 3.], [1., 2., 3.], [1., 2., 3.]])
c/a
array([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]])
a+a
array([2, 4, 6])
a*a
array([1, 4, 9])
a-a
array([0, 0, 0])
a/a
array([1., 1., 1.])
b=np.array(([1,2,3],[4,5,6],[7,8,9]))
b
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
b.T
array([[1, 4, 7], [2, 5, 8], [3, 6, 9]])
a=np.array((1,2,3,4)) a
array([1, 2, 3, 4])
a.T
array([1, 2, 3, 4])
列排列np.msort(a),
行排列np.sort(a),
np.argsort(a)排序后返回下标
x=np.array([3,1,2]) index_array=np.argsort(x) index_array
array([1, 2, 0], dtype=int64)
x[index_array]
array([1, 2, 3])
x=np.array([[0, 3, 4], [2, 2, 1]]) x.sort() x
array([[0, 3, 4], [1, 2, 2]])
x=np.array([[0, 3, 4], [2, 2, 1]]) x
array([[0, 3, 4], [2, 2, 1]])
a = np.argsort(x,axis=0)a
array([[0, 1, 1], [1, 0, 0]], dtype=int64)
np.argsort(x,axis=1)
array([[0, 1, 2],
[2, 0, 1]], dtype=int64)
x.sort(axis=1)
x
array([[0, 3, 4],
[1, 2, 2]])
x.sort(axis=0)
x
array([[0, 2, 2],
[1, 3, 4]])
参数说明:
a:一个要排序的数组array,
axis:整数或None,如果axis=None,数组在排序之前将被展平,默认axis=-1,将排序按最后一列排序
kind:排序用到的算法,可选项 {‘quicksort’, ‘mergesort’, ‘heapsort’},默认为quicksort
order:要进行排序的区域,
返回:一个与a相同数据类型和形状的数组。
使用numpy中的sort函数,加参数axis=None对数组x进行排序。
x=np.array([[0, 3, 4], [2, 2, 1]])
a = np.sort(x,axis=None)
a
array([0, 1, 2, 2, 3, 4])
x=np.array([[0, 3, 4], [2, 2, 1]])
a = np.sort(x,axis=-1)
a
array([[0, 3, 4],
[1, 2, 2]])
x=np.array([[0, 3, 4], [2, 2, 1]])
a = np.sort(x,axis=1)
a
array([[0, 3, 4],
[1, 2, 2]])
x=np.array([[0, 3, 4], [2, 2, 1]])
a = np.sort(x,axis=0)
a
array([[0, 2, 1],
[2, 3, 4]])
x=np.array([[0, 3, 4], [2, 2, 1]])
a = np.msort(x)
a
array([[0, 2, 1],
[2, 3, 4]])
dtype = [('name', 'S10'), ('height', float), ('age', int)]
values = [('Arthur', 1.8, 41), ('Lancelot', 1.9, 38),('Galahad', 1.7, 38)]
x = np.array(values, dtype=dtype)
a = np.sort(x, order=['age', 'height'])
a
array([(b'Galahad', 1.7, 38), (b'Lancelot', 1.9, 38),
(b'Arthur', 1.8, 41)],
dtype=[('name', 'S10'), ('height', '