numpy基础功能
本节介绍numpy的一些基本操作:
- numpy 创建对象
- numpy 基本操作
- numpy 文件读取
一、创建
1.1 创建基础类型
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
名称 | 描述 |
---|---|
object | 数组或嵌套的数列 |
dtype | 数组元素的数据类型,可选 |
copy | 对象是否需要复制,可选 |
order | 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) |
subok | 默认返回一个与基类类型一致的数组 |
ndmin | 指定生成数组的最小维度 |
import numpy as np
a = np.array([1, 2, 3])
print(a)
# 多于一个维度
import numpy as np
a = np.array([[1, 2], [3, 4]])
print(a)
# 最小维度
import numpy as np
a = np.array([1, 2, 3, 4, 5], ndmin=2)
print(a)
# dtype 参数
import numpy as np
a = np.array([1, 2, 3], dtype=complex)
print(a)
1.2 0矩阵
# 全为0的矩阵(元组创建)
np.zeros((3, 4))
# 全为0的矩阵(数组创建)
np.zeros([3, 4])
1.3 1矩阵
np.ones((2, 3, 4), dtype=np.int32) # 全为1的矩阵
1.4 指定间距创建np
print(np.arange(10, 30, 5)) # 以5为间距
print(np.arange(0, 2, 0.3)) # 以0.3为间距
1.5 随机数np
np.random.random((2, 3)) # 产生随机数
1.6 线性空间
from numpy import pi
np.linspace(0, 2 * pi, 100) # 0~2*pi之间有100个数
np.sin(np.linspace(0, 2 * pi, 100)) # 给这100个数取正弦值
二、 练习numpy这个结构
2.1 数组信息获取
- v=numpy.arrays(list),创建数组
- type(v):结构
- v.shape:数组的维度
- v.dtype:数组的数据类型
# 创建数组
# 一维
vector = np.array([5, 10, 15, 20])
# 二维
matrix = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
print("数据:")
print("vector:", vector)
print("matrix:", matrix)
print("结构:")
print(type(vector))
print(type(matrix))
print("成员数据类型:")
print(vector.dtype)
print(matrix.dtype)
print("矩阵维度:")
print(vector.shape)
print(matrix.shape)
数组的切分
#截取部分数据:
vector = np.array([5, 10, 15, 20])
# print(vector[0:3])
vector
matrix = np.array([
[5, 10, 15],
[20, 25, 30],
[35, 40, 45]
])
print(matrix[:,1]) # 所有样本的第二列
matrix = np.array([
[5, 10, 15],
[20, 25, 30],
[35, 40, 45]
])
print(matrix[:,0:2]) # 第0,1列
matrix = np.array([
[5, 10, 15],
[20, 25, 30],
[35, 40, 45]
])
print(matrix[1:3,0:2]) # 第1:2行,第0:1列
2.2 基本逻辑操作
介绍numpy中的一些基本逻辑操作
2.2.1.== 操作
- 单纯判断
import numpy
vector = numpy.array([5, 10, 15, 20])
print("vector:", vector)
# 这是个判断,判断array中那些元素为10
print(vector == 10)
matrix = numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
print("matrix", matrix)
print(matrix == 25)
- 判断加引用, 输出为true值的元素
vector = numpy.array([5, 10, 15, 20])
equal_to_ten = vector == 10
print(equal_to_ten)
print(vector[equal_to_ten])
matrix = numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
second_column_25 = matrix[:, 1] == 25
print(second_column_25)
print(matrix[second_column_25, :])
2.2.2 & 与操作
vector = numpy.array([5, 10, 15, 20])
equal_to_ten_and_five = (vector <= 10) & (vector >= 5) # 与操作
print(equal_to_ten_and_five)
2.2.3 | 操作
vector = numpy.array([5, 10, 15, 20])
equal_to_ten_or_five = (vector == 10) | (vector == 5) # 或操作
print(equal_to_ten_or_five)
2.3 运算
a = np.array( [20,30,40,50] )
b = np.arange( 4 )
print (a)
print (b)
3.1 + 、-
#b
c = a-b
print (c)
c = c -1
print (c)
3.2 乘方
b = np.arange( 4 )
print("b:", b)
print ("b2:", b**2) # 乘方操作
3.3 比较
a = np.array( [20,30,40,50] )
print (a<35)
3.4 矩阵相乘
A = np.array([[1,1],
[0,1]])
B = np.array([[2,0],
[3,4]])
print (A)
print ('-------')
print (B)
print ('--各个位置相乘----')
print (A*B)
print ('----矩阵相乘---')
print (A.dot(B)) #
print ('-------')
print (np.dot(A, B))
A = np.array([[1,1],
[0,1]])
B = np.array([[2,0],
[3,4]])
np.matmul(A, B)
3.5 e次方与求根
B = np.arange(3)
print (B)
print (np.exp(B)) # e的次方
print (np.sqrt(B)) # 求根
3.6 向下取整
a = 10*np.random.random((3,4))
print(a)
b = np.floor(a) # 向下取整
b
3.7 水平展开
b.ravel() # 水平展开
3.8 转置
b.T
3.9 拼接
a = np.floor(10*np.random.random((2,2)))
b = np.floor(10*np.random.random((2,2)))
print (a)
print ('---')
print (b)
print ('---')
print (np.vstack((a,b))) # 向下拼接
print(np.hstack((a,b))) # 左右拼接
3.10 分割
a = np.floor(10*np.random.random((2,12)))
print (a)
print ('---')
print (np.hsplit(a,3)) # 平均分成三个
print ('---')
# 在3,4处分割
print (np.hsplit(a,(3,4)))
a = np.floor(10*np.random.random((12,2)))
print ('---')
print (a)
np.vsplit(a,3)
3.11 复制
a = np.arange(12) # 完全相等
b = a
print (b is a)
b.shape = 3,4
print (a.shape)
print (id(a))
print (id(b))
c = a.view() # 浅层复制,值不一样,共用一组数据
print (c is a) # 不相等
c.shape = 2,6
print (a.shape)
c[0,4] = 1234
print (a)
print (id(a))
print (id(c))
d = a.copy() #深层复制
print(d is a)
d[0,0] = 9999
print (d)
print (a)
3.12 降维
- flatten()
- 默认按照行降维 flatten() = flatten(‘A’)
- 按照列降维 flatten(‘F’)
import numpy as np
a=np.array([[1,2],[3,4],[5,6]])
a
a.flatten()
a.flatten('F')
3.13 赋值操作
vector = numpy.array([5, 10, 15, 20])
equal_to_ten_or_five = (vector == 10) | (vector == 5)
vector[equal_to_ten_or_five] = 50 # 给true赋值
print(vector)
matrix = numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
second_column_25 = matrix[:, 1] == 25
print(second_column_25)
matrix[second_column_25, 1] = 10
print(matrix)
3.14 强制类型转换astype
vector = numpy.array(["1", "2", "3"])
print(vector.dtype)
print(vector)
vector = vector.astype(float) # 强制类型转型
print(vector.dtype)
print(vector)
3.15 求最小值
vector = numpy.array([5, 10, 15, 20])
vector.min() # 求最小值
3.16 求和
- 求一行之和name.sum(axis=1)
- 求一列之和name.sum(axis=0)
- 求全部的和 name.sum()
matrix = numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
matrix.sum()
# 求每一行之和
matrix = numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
matrix.sum(axis=1)
# 求每一列之和
matrix = numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
matrix.sum(axis=0)