numpy基础学习 参考莫烦python

import numpy as np
#创建
a = np.array([1, 3, 3])
a = np.array([2,23,4],dtype=np.int)
a = np.array([2,23,4],dtype=np.float)#指定类型
a = np.zeros((3,4)) # 数据全为0,3行4列
a = np.ones((3,4),dtype = np.int)   # 数据为1,3行4列
a = np.empty((3,4)) #  基本接近于0的数
a = np.arange(10,20,2) # 10-19 的数据,2步长整数
a = np.linspace(1,10,20) # 开始端1,结束端10,且分割成20个数据,生成线段非整数
a = np.linspace(1,10,20).reshape((5,4)) # 更改shape 创建出来是一维的,改变形状

#重点 array dtype arange reshape

#基本属性
print('number of dim:',array.ndim)  # 维度
print('shape :',array.shape)    # 行数和列数
print('size:',array.size)   # 元素个数

# 重点 dim shape size


#基本运算
c=a-b  # array([10, 19, 28, 37])
c=a+b   # array([10, 21, 32, 43])
c=a*b   # array([  0,  20,  60, 120])
c=b**2  # array([0, 1, 4, 9])python 中的平方
c=10*np.sin(a)  #sin cos 
print(b<3)  #判断b中是的数字是否<3出来的是数字
c_dot = np.dot(a,b)#矩阵乘法 注意和*的区别


#重点  + - * ** sin cos < > dot

#高级运算1
a=np.random.random((2,4))#随机生成2-4之间的数字
np.sum(a)   # 4.4043622002745959
np.min(a)   # 0.23651223533671784
np.max(a)   # 0.90438450240606416
print("sum =",np.sum(a,axis=1)) # axis 1行 0列


# 重点 random sum max min axis

#高级运算2
import numpy as np
A = np.arange(2,14).reshape((3,4)) 

# array([[ 2, 3, 4, 5]
#        [ 6, 7, 8, 9]
#        [10,11,12,13]])
         
print(np.argmin(A))    # 0 返回的是矩阵中最大值得下标
print(np.argmax(A))    # 11
print(np.mean(A))        # 7.5平均
print(np.average(A))     # 7.5平均
print(np.cumsum(A))  #累加
print(np.diff(A))     #累减
#重点 argmin  argmax mean diff cumsum

#高级运算3
print(np.sort(A))    #每行按从大到小排序
print(A.T) #转置


print(A)
# array([[14,13,12,11]
#        [10, 9, 8, 7]
#        [ 6, 5, 4, 3]])
print(np.clip(A,5,9))    #小于5的用5代替 大于9的用9代替 中间的不变
# array([[ 9, 9, 9, 9]
#        [ 9, 9, 8, 7]
#        [ 6, 5, 5, 5]])

#重点 A.T sort clip



#索引
A = np.arange(3,15).reshape((3,4))
"""
array([[ 3,  4,  5,  6]
       [ 7,  8,  9, 10]
       [11, 12, 13, 14]])
"""
         
print(A[2])  
print(A[1][1])      # 8
print(A[1, 1:3])    # [8 9]


for row in A: #按行输出
    print(row)
"""    
[ 3,  4,  5, 6]
[ 7,  8,  9, 10]
[11, 12, 13, 14]
"""       
for column in A.T: #按列输出 利用性质转置后 按行输出
    print(column)
"""  
[ 3,  7,  11]
[ 4,  8,  12]
[ 5,  9,  13]
[ 6, 10,  14]
"""
A = np.arange(3,15).reshape((3,4))
print(A.flatten())   #按行的数列 flat平的
# array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])

for item in A.flat:# A.flat 迭代器
    print(item)
#重点 按行输出 按列输出 元素一个一个输出 flat flatten


#array合并
print(np.vstack((A,B)))    # vertical stack 垂直合并
D = np.hstack((A,B))       # horizontal stack 左右合并

# A=[1, 1, 1]
print(A[np.newaxis,:]) #列增加维度
# [[1 1 1]]
print(A[np.newaxis,:].shape) 
# (1,3)


print(A[:,np.newaxis])#行增加维度
"""
[[1]
[1]
[1]]
"""

print(A[:,np.newaxis].shape)
# (3,1)


A = np.array([1,1,1])[:,np.newaxis]
B = np.array([2,2,2])[:,np.newaxis]
         
C = np.vstack((A,B))   # vertical stack
D = np.hstack((A,B))   # horizontal stack

print(D)
"""
[[1 2]
[1 2]
[1 2]]
"""

print(A.shape,D.shape)
# (3,1) (3,2)
C = np.concatenate((A,B,B,A),axis=0)#按列合并

print(C)
"""
array([[1],
       [1],
       [1],
       [2],
       [2],
       [2],
       [2],
       [2],
       [2],
       [1],
       [1],
       [1]])
"""

D = np.concatenate((A,B,B,A),axis=1) #按行合并

print(D)
"""
array([[1, 2, 2, 1],
       [1, 2, 2, 1],
       [1, 2, 2, 1]])
"""
#重点 vstack hstack concatenate(推荐用这个,少记忆点东西)




# array分割
print(np.split(A, 2, axis=1))#列平均分割成两半
"""
[array([[0, 1],
        [4, 5],
        [8, 9]]), array([[ 2,  3],
        [ 6,  7],
        [10, 11]])]
"""
print(np.split(A, 3, axis=0))#行平均分割成三个部分

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


print(np.array_split(A, 3, axis=1)) # 不均等分割
"""
[array([[0, 1],
        [4, 5],
        [8, 9]]), array([[ 2],
        [ 6],
        [10]]), array([[ 3],
        [ 7],
        [11]])]
"""

# 重点 split array_aplit axis




# 深拷贝 与 浅拷贝
a = np.arange(4)
# array([0, 1, 2, 3])

b = a # 浅拷贝 改变b的值a同时改变
b = a.copy()    # deep copy a与b的内存指向不同了

发布了17 篇原创文章 · 获赞 0 · 访问量 296

猜你喜欢

转载自blog.csdn.net/DropJing/article/details/104109629