Numpy讲解(快速入门)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunshunli/article/details/80037719

 
'''
import numpy as np

[[1,2,3],
[4,5,6]]#这代表的的是一个列表

array=np.array([[1,2,3],
                [4,5,6]])#通过这个函数就转换成了数组
print(array)
print(array.shape)#输出的是数组的形状即多少行,多少列,输出的结果是一个元组的形式,如果元组中有一个值,那么这个数组就是一维的数组,一次类推。
print(array.size)#输出数组的大小,总共有多少个元素
print(array.ndim)#输出数组的维度

import numpy as np
a=np.array([1,2,3],dtype=np.int)#默认的int代表int32,你也可以写int64还有np.float,np.complex等
b=np.array([1,2,3],ndim=2)#代表二维数组
print(a)
print(b)
print(a.dtype)

import numpy as np
a=np.array([[1,2,3],
            [4,5,6]])
#a.shape=(3,2)
print(a)#这就是一个二维的数组
b=np.zeros([2,2])
print(b)
c=np.ones([2,2])
print(c)
d=np.empty([2,2])
print(d)
e=np.arange(10,19,2)
print(e)
f=np.arange(12).reshape((3,4))
print(f)

import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)
c=a-b
print(a)
print(b)
print(c)
print(a**2)

import numpy as np
#eye(N,M,K)N:代表返回的行数M:代表返回的列数K:代表对角线的行号
a=np.eye(6)#返回一个对角线为1其余为0的二维数组
print(a)
b=np.eye(6,3,2)
print(b)
#np.inentity(N,dtype)
c=np.identity(3,int)
print(c)#返回的是一个对角线为1的二维数组

import numpy as np
#np.matrix(data,dtype,copy)data是字符串或者为ndarray类型
a=np.array([(1,2,),(3,4)])
a1 = np.matrix('1 2 7; 3 4 8; 5 6 9')
b=np.matrix(a)
print(b)#将数组转换成矩阵
c=np.asmatrix(a)
print(c)
print(a[0,0])
print(a1)

import numpy as np
x=np.array([1,2,3])
y=x
z=np.copy(x)
print(x)
print(y)
print(z)
x[0]=10
print(x[0]==y[0])
print(x[0]==z[0])

import numpy as np
inteable=(x**2 for x in range(1,10))
a=np.fromiter(inteable,dtype=int)
print(a)

import numpy as np
import matplotlib.pyplot as plt
#np.linspace(start,end,num)主要这几个参数,num是分几段。
a=np.linspace(2.0,3.0,num=5)
print(a)
N=8
y=np.zeros(N)
x1=np.linspace(0,10,N,endpoint=True)
x2=np.linspace(0,10,N,endpoint=False)
print(plt.plot(x1, y, 'o'))
plt.show()

import numpy as np
#np.diag(v,k)v就是一个数组,k是一个偏移量,函数返回的是对角线的值,如果没有k=0的话
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
b=np.diag(a)
c=np.diag(a,k=1)
print(b)
print(c)

import numpy as np
#np.diagflat(v,k)返回的是吧数组中的值作为对角线输出。
a=np.array([[1,2],[3,4]])
b=np.diagflat(a)
print(b)


import numpy as np

[[1,2,3],
[4,5,6]]#这代表的的是一个列表

array=np.array([[1,2,3],
                [4,5,6]])#通过这个函数就转换成了数组
print(array)
print(array.shape)#输出的是数组的形状即多少行,多少列
print(array.size)#输出数组的大小,总共有多少个元素
print(array.ndim)#输出数组的维度

import numpy as np
a=np.array([1,2,3],dtype=np.int)#默认的int代表int32,你也可以写int64还有np.float,np.complex等
b=np.array([1,2,3],ndim=2)#代表二维数组
print(a)
print(b)
print(a.dtype)

import numpy as np
a=np.array([[1,2,3],
            [4,5,6]])
print(a)#这就是一个二维的数组
b=np.zeros([2,2])
print(b)
c=np.ones([2,2])
print(c)
d=np.empty([2,2])
print(d)
e=np.arange(10,19,2)
print(e)
f=np.arange(12).reshape((3,4))
print(f)

import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)
c=a-b
print(a)
print(b)
print(c)
print(a**2)

import numpy as np
#eye(N,M,K)N:代表返回的行数M:代表返回的列数K:代表对角线的行号
a=np.eye(6)#返回一个对角线为1其余为0的二维数组
print(a)
b=np.eye(6,3,2)
print(b)
#np.inentity(N,dtype)
c=np.identity(3,int)
print(c)#返回的是一个对角线为1的二维数组

import numpy as np
#np.matrix(data,dtype,copy)data是字符串或者为ndarray类型
a=np.array([(1,2,),(3,4)])
a1 = np.matrix('1 2 7; 3 4 8; 5 6 9')
b=np.matrix(a)
print(b)#将数组转换成矩阵
c=np.asmatrix(a)
print(c)
print(a[0,0])
print(a1)

import numpy as np
x=np.array([1,2,3])
y=x
z=np.copy(x)
print(x)
print(y)
print(z)
x[0]=10
print(x[0]==y[0])
print(x[0]==z[0])

import numpy as np
inteable=(x**2 for x in range(1,10))
a=np.fromiter(inteable,dtype=int)
print(a)

import numpy as np
import matplotlib.pyplot as plt
#np.linspace(start,end,num)主要这几个参数,num是分几段。
a=np.linspace(2.0,3.0,num=5)
print(a)
N=8
y=np.zeros(N)
x1=np.linspace(0,10,N,endpoint=True)
x2=np.linspace(0,10,N,endpoint=False)
print(plt.plot(x1, y, 'o'))
plt.show()

import numpy as np
#np.diag(v,k)v就是一个数组,k是一个偏移量,函数返回的是对角线的值,如果没有k=0的话
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
b=np.diag(a)
c=np.diag(a,k=1)
print(b)
print(c)

import numpy as np
#np.diagflat(v,k)返回的是吧数组中的值作为对角线输出。
a=np.array([[1,2],[3,4]])
b=np.diagflat(a)
print(b)

import numpy as np
a=np.arange(10)
a[2]=100
a[3]=101
print(a)
print(a[5])
print(a[3:5])
print(a[:5])
print(a[:-1])
print(a[1:-1:2])#起始位置,结束位子,步长,三个参数的意思。
print(a[::-1])#省略起始位置和结束位置,输出时从后往前全部输出。
print(a[5:1:-2])#如果起始位置的下标大于结束位置的下表,那么步长必须是负数。

import numpy as np
a=np.arange(0,60,10).reshape(-1,1)+np.arange(0,6)
print(a)
[[ 0  1  2  3  4  5]
 [10 11 12 13 14 15]
 [20 21 22 23 24 25]
 [30 31 32 33 34 35]
 [40 41 42 43 44 45]

import numpy as np
a=np.arange(0,60,10).reshape(-1,1)+np.arange(0,6)
print(a)
print(a[0:3,2:4])
print(a[:,2:4])

import numpy as np
a=np.array([1,2,3,4])
b=np.array([6,7,8,9])
c=np.add(a,b)
print(c)

import numpy as np
a=[1,2,3,4]
b=[[1,2,3],(4,5,6)]
c=np.asarray(a,dtype=float)#两个参数
d=np.asarray(b)
print(c)#将列表转换为数组
print(d)

import numpy as np
x = np.array([[1,  2],  [3,  4],  [5,  6]])
print(x)
y = x[[0,1,2],  [0,1,0]]#y中的值是(0,0),(1,1),(2,0)的值。
print(y)
'''
import numpy as np
# A=np.arange(3,15).reshape(3,4)
# print(A.flatten())#把一个二维的数组转换为一个一维的数组
# for item in A.flat:
#     print(item)

###################
#数组的合并
# A=np.array([1,1,1])
# B=np.array([2,2,2])
# C=np.vstack((A,B))#把两个数据进行合并(上下合并)
# D=np.hstack((A,B))
# E=np.array([1,1,1])[:,np.newaxis]
# F=np.array([2,2,2])[:,np.newaxis]
# G=np.hstack((E,F))
# H=np.concatenate((E,F,F,E),axis=0)
# I=np.concatenate((E,F,F,E),axis=1)
# print(A.shape)
# print(B.shape)
# print(C.shape)
# print(D.shape)
# print(G)
# print(H)
# print(I)
# print(A[np.newaxis,:].shape)#增加一个维度在行上
# print(A[np.newaxis,:])
# print(A[:,np.newaxis].shape)#增加一个维度在列上
# print(A[:,np.newaxis])
# print(C)
# print(D)

############
#数组的分割
# A=np.arange(12).reshape(3,4)
# #等量的分割
# print(np.split(A,2,axis=1))
# print(np.split(A,3,axis=0))
# print(np.vsplit(A,3))
# print(np.hsplit(A,2))
# #不等量的分割
# print(np.array_split(A,3,axis=1))

#数组的赋值
#这样写的话,如果a 改变了那么其他的被赋值的也都会改变
# a=np.arange(4)
# b=a
# c=a
# d=b
# e=a.copy()#不被改变的赋值
# a[0]=11
# print(a)
# print(b)
# print(e)


import numpy as np
'''
a=np.arange(15).reshape(3,5)
print(a)#输出a
print(np.size(a))#数组的大小。元组的长度的值等于轴的数量ndim。
print(np.ndim(a))#数组的轴数也就是秩数
print(np.shape(a))#数组的形状几行几列
print(a.dtype.name)#数组的类型
# 维度就是我们所说的空间维度,一维是直线,二维平面(比如1080p灰度图,1920x1080),
# 三维立方体(比如1080P的RGB图像就是1920x1080x3)。
#NumPy数组的维数称为秩,一维数组的秩为1,二维数组的秩为2,以此类推。
#在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量。也就是说秩和轴是等价的。
#比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。
#所以一维数组就是NumPy中的轴(axes),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。
#而轴的数量——秩,就是数组的维数。
#创建数组
#1.您可以使用该array函数从常规Python列表或元组创建数组。结果数组的类型是从序列中元素的类型推导出来的。
test1=np.array([2,3,4])
test2=np.array((2.0,3.0,4.0))
print(test1)
print(test2)
print(test1.dtype,test2.dtype)
#将序列转换成二维阵列或者三位阵列
test3=np.array([[1,2,3],[4,5,6]])#等价于np.array([(1,2,3),(4,5,6)])
print(test3)
#也可以在创建是指定其数组的类型
test4=np.array([[1,2],[3,4]],dtype=np.complex)
print(test4)
#通常,数组的元素最初是未知的,但其大小是已知的。因此,NumPy提供了几个函数来创建具有初始占位符内容的数组。# 这些最小化了增长阵列的必要性,这是一项昂贵的操作
#该函数zeros创建一个充满零的数组
test5=np.zeros((3,4))
print(test5)
#该函数 ones创建一个充满1的数组
test6=np.ones((2,3,4))#三维
print(test6)
#该函数empty 创建一个数组,其初始内容是随机的,默认情况下,创建的数组的dtype是 float64。
test7=np.empty((2,3))
print(test7)
#arange
test8=np.arange(10,30)#可以两个参数也可以三个参数,第三个参数代表的是步长
print(test8)
print(type(test8))#所以test8是数组类型
#np.random.rand用[0,1]之间的数来均匀分布
test9=np.random.rand(2,3,2)
test10=np.random.rand(3,2)
print(test9)
print(test10)
#np,random.randn这个是状态分布
test11=np.random.randn()
print(test11)
#打印数组将以为数字打印成行,将二维数组打印成矩阵,将三维数组打印成矩阵列表
b=np.arange(6)
print(b)
c=np.arange(12).reshape(3,4)
print(c)
d=np.arange(12).reshape(2,2,3)
print(d)
#如果数组太大而无法打印,那么numpy会自动跳过数组中心得部分并仅打印角落
print(np.arange(10000))

#基本操作
a=np.array([20,30,40,50])
b=np.arange(4)
c=a-b
d=b**2
e=10*np.sin(a)
print(c)
print(d)
print(e)
print(a<35)#判断数组中的每个元素返回值为Ture或者是Flase
f=np.random.random((2,3))
print(f)
print(f.sum())
print(f.min())
print(f.max())
g=np.arange(12).reshape(3,4)
print(g)
print(g.sum(axis=0))#axis=0表示的是列,axis=1,表示的是行
A=np.array([[1,1],
            [0,1]])#A是数组
B=np.array([[2,0],
            [3,4]])#B是数组
A1=np.mat(A)#A1代表的是矩阵
B1=np.mat(B)#B1代表的是矩阵
C=np.multiply(A,B)
C1=np.multiply(A1,B1)
#数组和矩阵对应位置相乘,输出与输入数组/矩阵的大小一致。
#两个数组运算,结果为一个数组,两个矩阵运算,结果为一个矩阵。
D=np.dot(A,B)#dot是二维数组的运算规则
D1=np.dot(A1,B1)
print(C)
print(C1)
print(D)
print(D1)

#同用功能
a=np.arange(3)
b=np.exp(a)#exp函数计算的是e的X次方
print(b)
c=np.sqrt(a)#开平方
print(c)
d=np.array([2,3,4])#相加
e=np.add(a,d)
print(e)

#索引,切片,迭代
a=np.arange(10)**3#每一个元素都进行三次方
print(a)
print(a[2])
print(a[2:5])
a[:6:2]=-1000#从开始到位置6,排他,将每2个元素设置为-1000
print(a)
#介绍一个函数np.fromfunction(
print(a[::-1])#顺序取反)它的作用是从函数中创建数组
def function(x,y):#x,y的值其实就是数组的索引;
    return 10+x+y
a=np.fromfunction(function,(5,4),dtype=int)
print(a)
#多维数组每个轴可以有一个索引,这些索引以逗号的元组给出。
print(a[2,3])#这种形式表的是一个元素
print(a[0:5,1])#按照轴数或者是秩数
print(a[:,1])#如果冒号前后没有数字,那么代表的是整个轴
print(a[1:3,:])
#当提供的索引少于轴的数量时,缺失的索引被认为是完整的切片 :;
print(a[-1])#等价于a[-1,:]
#对多维数字进行迭代(是针对第一个轴完成的)输出的结果是每一个周的数组
for row in a:
    print(row)
#如果想要对每一个元素进行迭代,可以使用flat属性,作为数组的所有元素的迭代器
for element in a.flat:
    print(element)
c=np.array([[[0,1,2],
             [10,12,13]],
            [[100,101,102],
            [110,112,113]]])
print(c.shape)
print(c[1,...])#等价于c[1,:,:]
print(c[...,2])#等价于c[:,:,2]
#改变数组的形状
a=np.floor(10*np.random.random((3,4)))#math.floor和np.floor函数的作用都是返回数字的下舍整数
print(a)
#可以使用各种命令更改阵列的形状。请注意,以下三个命令都返回已修改的数组,但不更改原始数组:
print(a.ravel())#按照一行一行的输出
print(a.reshape(6,2))#重新设定格式
print(a.T)#装置,
#堆叠不同的数组
a=np.floor(10*np.random.random((2,2)))
b=np.floor(10*(np.random.random((2,2))))
c=np.vstack((a,b))
d=np.hstack((a,b))#这两个函数的作用是堆叠两个数组,当然这两个数组是同秩的,
#但也有不同,vstack是整体的堆叠,列数不变,行数增加,hstack是合并形式的堆叠,行数不变,列数变多。
print(a)
print(b)
print(c)
print(d)
from numpy import newaxis
e=np.column_stack((a,b))
print(e)
m=np.array([1,2])
n=np.array([3,4])
res=np.column_stack((m,n))
print(res)
#可以看出如果是二维数组,那么hstack和column_stack是相同的。
#将一个数组分割成几个较小的数组
a=np.floor(10*np.random.random((2,12)))
print(a)
b=np.hsplit(a,3)
print(b)
c=np.hsplit(a,(3,4))#这种形式是指定在第三列和第四列后分割
print(c)
'''

猜你喜欢

转载自blog.csdn.net/sunshunli/article/details/80037719
今日推荐