Python入门:numpy——自学(day 1)

创建array

import numpy as np
array = np.array([1,2,3],
				[3,4,5])
print(array)
  • array的类型是dtype
a = np.array([1,2,3],dtype=np.float64)
print(a.dtype)
  • zeros(), ones()
  • empty() # 据给定形状和类型(shape,[dtype, order])返回一个新的空数组。
a = np.zeros((3,4))
print(a)
'''
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
 '''
  • arrange()
a = np.arange (12,20,2)
print(a)

#[12 14 16 18]
  • reshape()
a = np.arange (12).reshape((3,4))
print(a)
'''
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
 '''
  • linspace() 在指定的间隔内返回均匀间隔的数字。
a = np.linspace(2,12,6).reshape((2,3))
print(a)
'''
[[ 2.  4.  6.]
 [ 8. 10. 12.]]
 '''

numpy基本运算1

  • 加减乘除平方
import numpy as np
a = np.array([10,20,30])
b = np.arange(3)

c=a+b
print(c)
  • 三角函数 np.sin(a)
c= np.sin(a)
print(c)
  • 比较
print(b)
print(b<2)
'''
[0 1 2]
[ True  True False]
'''
  • 矩阵乘法 np.dot(a,b)a.dot(b)
import numpy as np
a = np.array([[20,30],
             [1,0]])
b = np.arange(4).reshape(2,2)

c_dot1=np.dot(a,b)
c_dot2=a.dot(b)
print(c_dot1)
print(c_dot2)
'''
[[ 60 110]
 [  0   1]]

[[ 60 110]
 [  0   1]]
'''
  • np.random.random((2,4)) 生成2行4列的随机矩阵(返回随机的浮点数,在半开区间 [0.0, 1.0))
  • np.sun()求和
  • np.min()最小
  • np.max()最大
  • axis=1 :使用1值表示沿着每一行或者列标签模向执行对应的方法
    axis=0 : 使用0值表示沿着每一列或行标签\索引值向下执行方法
import numpy as np
a = np.random.random((2,2))

print(a)
print(np.sum(a,axis=0))
'''
[[0.28787573 0.81501852]
 [0.1049973  0.54395478]]
[0.39287303 1.3589733 ]
'''

numpy基本运算2

  • np.argmin() 计算最小值的索引.
  • np.mean()np.average() ,平均值
  • np.medien() 中位数
  • np.cumsum() 累加
  • np.diff() 累差(每两个数的差)
  • np.nonzero() 查找非零的数的位置
  • np.sort()排序
  • np.transpose(A)A.T 转置
  • np.clip(A,min,max)保留min和max之间的数,小于min的数变成min;大于max的数变成max
    -np.mean(A,axis=0) axis=0 对列进行计算;axis=1对列进行计算

numpy索引

import numpy as np

A = np.arange(3,15)
print(A)
print(A[3])

A = np.arange(3,15).reshape(3,4)
print(A)
print(A[2]) # 只索引行
print(A[1][1]) #第一行的第一列
print(A[1,1]) #第一行的第一列

print(A[1,:]) #第一行的所有数
print(A[:,1]) #第一列的所有数

print(A[1,1:3]) #第一行第一列到第三列的数

# for 循环
for row in A:
    print(row) # 迭代每一行

for column in A.T:
    print(column) #通过转置,得到迭代的列

print(A.flatten()) #将矩阵内容放入一页中
for item in A.flat: #
    print(item) #迭代矩阵中每一个项

numpy array 合并

import numpy as np

A = np.array([1,1,1])[np.newaxis,:] # np.newaxis的功能:插入新维度
B = np.array([2,2,2])[np.newaxis,:] # 原本的(10,)移到行上,然后新增一列

C = np.vstack((A,B))  #vertical stack 上下合并
D = np.hstack((A,B))  #horizontal stack 左右合并

print(C)
print(D)
print(A.shape,C.shape,D.shape)

print(A.transpose()) # 不能通过转置直接将横向的数列转化为竖向的数列
print(A.T.shape) #原因:还是一维的

print(A[np.newaxis,:]) #给行增加一个维度; print(A[:,np.newaxis]) 给列加一个维度


E=np.concatenate((A,B,B,A),axis=0)  #可以进行多个array的合并,并可以要求在横纵哪个维
# 度合并 (如果用的是序列而不是矩阵,列的stack会报错), 
# axis = 0 : 将A,B保证列数不变,纵向合并。行数相加
print(E)

numpy array 分割

import numpy as np
A = np.arange(12).reshape((3,4))
print(A)

print(np.split(A,2,axis=1)  #将列数分为两半
'''
[array([[0, 1],
        [4, 5],
        [8, 9]]),
 array([[ 2,  3],
        [ 6,  7],
        [10, 11]])]
'''
A = np.arange(12).reshape((3,4))
print(np.split(A,1,axis=0)

# print(np.split(A,3,axis=1)) 不能进行不等量分割

#不等量分割如下:
A = np.arange(12).reshape((3,4))
print(np.array_split(A,3,axis=1))

A = np.arange(12).reshape((3,4))
print(np.vsplit(A,3)) #横向切割,将纵长数组切割为纵短数组

A = np.arange(12).reshape((3,4))
print(np.hsplit(A,2)) #纵向分割
  • 这里np.vsplitnp.stack 切割方向相反

赋值 & copy

import numpy as np

a = np.arange(4)
b=a
c = a.copy()

a[0] = 10
b, c

'''
(array([10,  1,  2,  3]), array([0, 1, 2, 3]))
'''

猜你喜欢

转载自blog.csdn.net/weixin_49340599/article/details/108655686