python学习笔记——numpy的squeeze方法

squeeze的中文意思是挤压的意思
在numpy中squeeze的用法是什么呢?
首先运行代码

第一次代码实验

cost=[[[[12,24]]]]
#cost=[[12,22],[23,33],[34,44]]
#
print('cost,squeeze之前的样子',cost)
print(type(cost))
#print(len(cost))
#print(cost[0][1])
cost=np.squeeze(cost)
print("________________________")
print("squeeze之后是什么样子:",cost)
print(type(cost))
print("hang:",cost.shape[0])
#print("lie:",cost.shape[1])

在这里插入图片描述

运行后的结果,会把所有的中括号都挤压掉,就剩下一个中括号
是一个2维的列向量

第二次代码实验


import numpy as np
cost=12
#
print('cost,squeeze之前的样子',cost)
print(type(cost))
#print(len(cost))
#print(cost[0][1])
cost=np.squeeze(cost)
print("________________________")
print("squeeze之后是什么样子:",cost)
print(type(cost))

在这里插入图片描述
这次定义了一个变量cost=12,是int类型的,squeeze之后,cost还是等于12,只是数据类型变为ndarray

第三个实验

import numpy as np
cost=[[12],[23],[34]]
#
print('cost,squeeze之前的样子',cost)
print(type(cost))
#print(len(cost))
#print(cost[0][1])
cost=np.squeeze(cost)
print("________________________")
print("squeeze之后是什么样子:",cost)
print(type(cost))

在这里插入图片描述
运行后的结果,把里面的三个中括号都删除了

第四个实验

cost=[[12,22],[23,33],[34,44]]
#
print('cost,squeeze之前的样子',cost)
print(type(cost))
#print(len(cost))
#print(cost[0][1])
cost=np.squeeze(cost)
print("________________________")
print("squeeze之后是什么样子:",cost)
print(type(cost))
print("hang:",cost.shape[0])
print("lie:",cost.shape[1])

在这里插入图片描述
变成了一个3行两列的矩阵

翻译代码import numpy as np from cvxopt import matrix, solvers solvers.options['show_progress'] = False # 市场出清,考虑网络阻塞 def market_clearing(alpha): # 供给曲线的截距和斜率 a_real = np.array([15.0, 18.0]) b_real = np.array([0.01, 0.008]) # 需求曲线的截距和斜率 c_real = np.array([40.0, 40.0]) * -1 d_real = np.array([0.08, 0.06]) # 机组功率上下限 p_min = np.array([0.0, 0.0]) p_max = np.array([500.0, 500.0]) # 负荷需求上下限 q_min = np.zeros(2) q_max = np.array([500.0, 666.666666666667]) J_g = ([[-0.333333333333333, -0.333333333333333, -0.666666666666667], [0.333333333333334, -0.666666666666667, -0.333333333333333], [0, 0, 0]]) J = np.array([[-0.333333333333333, 0.0, 0.333333333333333, -0.333333333333334], [-0.333333333333333, 0.0, 0.333333333333333, 0.666666666666667], [-0.666666666666667, 0.0, 0.666666666666667, 0.333333333333333]]) J_max = np.array([25.0, 1000.0, 1000.0, 25.0, 1000.0, 1000.0]) P = matrix(np.diag(np.append(b_real, d_real))) q = matrix(np.append(alpha, c_real)) G = matrix(np.vstack((J, -J, np.diag(-np.ones(4)), np.diag(np.ones(4))))) h = matrix(np.hstack((J_max, -p_min, -q_min, p_max, q_max))) A = matrix(np.hstack((-np.ones(2), np.ones(2)))).T b = matrix(0.0) sv = solvers.qp(P, q, G, h, A, b) miu1 = sv['z'][0:3] miu2 = sv['z'][3:6] nodal_price = (np.ones((3, 1)) * sv['y'][0] - np.dot(J_g, miu1 - miu2)).squeeze() nodal_price_g = np.array([nodal_price[0], nodal_price[2]]) mc_amount = np.array(sv['x'][:2]).squeeze() cost_real = 0.5 * b_real * mc_amount ** 2 + a_real * mc_amount cost_declare = mc_amount * np.transpose(nodal_price_g) profit = cost_declare - cost_real return nodal_price_g, profit if __name__ == '__main__': alpha = np.array([20.29, 22.98]) print(market_clearing(alpha))
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuejich

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值