首页 > 编程问答 >如何在复数的实部中编写 if 语句?

如何在复数的实部中编写 if 语句?

时间:2024-08-01 15:46:04浏览次数:13  
标签:python numpy matplotlib complex-numbers

我想绘制在复数上定义的这个函数: if Floor(Re(z))%2==0, f(z)=z else f(z)=sin(z)

我尝试编写以下代码:


import cplot
import math
import numpy as np

def f(z):
    if math.floor(np.real(z)[0])%2==0:
        res =z
    else:
        res=np.sin(z)  
    return res

plt = cplot.plot(f, (-10, +10, 3000), (-10, 10, 3000),5)
plt.show()

但是没有用,程序完全忽略了sin函数的存在,我也不知道为什么


我以为这是因为我使用了 math. np. 所以我测试的更简单函数

if Re(z)>=0, f(z) =z, else f(z)= sin(z)

import cplot
import numpy as np

def f(z):
    if np.real(z)[0]>=0:
        res =z
    else:
        res=np.sin(z)  
    return res

plt = cplot.plot(f, (-10, +10, 3000), (-10, 10, 3000),5)
plt.show()

这次 z 的存在被完全忽略了


我想也许问题来自 [0] np.real(z)[0] ,但删除它会产生错误

ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()

我使用了它们,结果仍然相同,它完全忽略了 z 在我的第二个代码中,而且问题似乎出在 > 符号中,如果我将其更改为 < 它完全忽略 sin

我不知道如何解决这个问题我试图搜索与此相关的任何内容,但我发现没有任何有用的东西。


遇到的问题源于将 NumPy 数组与标量 Python if 语句一起使用。NumPy 数组(比如你从 cplot.plot 函数传递给 f 的数组)可以有多个元素,而 Python 的 if 语句被设计用于评估单个布尔值。当你编写类似 if np.real(z) >= 0: 的内容时,你试图检查一个可能有多个元素的数组是否大于或等于零,这会导致错误“具有多个元素的数组的真值不明确”。

解决此问题的解决方案是使用 NumPy 的矢量化操作。NumPy 提供了一种称为 np.where 的函数,该函数允许你根据元素条件对数组执行基于元素的操作。

这是你的代码的更正版本:

import cplot
import numpy as np

def f(z):
    return np.where(np.floor(np.real(z)) % 2 == 0, z, np.sin(z))

plt = cplot.plot(f, (-10, +10, 3000), (-10, 10, 3000), 5)
plt.show()

在这个代码中:

  1. np.floor(np.real(z)) % 2 == 0 创建了一个布尔数组,该数组与输入数组 z 的形状相同。如果 z 中相应元素的实部的向下取整值为偶数,则此数组中的每个元素都为 True ,否则为 False

  2. np.where 函数然后根据此条件数组选择 z np.sin(z) 的值。如果条件数组中的元素为 True ,它将从 z 中选择相应的值,否则它将从 np.sin(z) 中选择值。

通过这种方式,你无需使用任何显式 if 语句即可有效地将函数应用于整个输入数组 z ,从而避免出现错误并获得预期的行为。

标签:python,numpy,matplotlib,complex-numbers
From: 78819716

相关文章

  • 用于从连接到 LAN 交换机的四个 Arduino 扩展板读取/保存数据的 Python 代码
    我有四个Arduino扩展板连接到LAN交换机。每个人都会发出一条“HelloJane”消息。LAN交换机已连接到我的PC。我需要将每个Arduino的数据/消息保存在PC上的单独文件夹中。请帮助使用Python脚本/代码。我能够看到来自所有四个Arduino的消息,但无法将它们保存到文......
  • 使用 Python 生产者和消费者在 Kubernetes minikube 上设置 Kafka Kraft
    我正在尝试从kubernetes集群外部连接到kubernetesminikubekafkapod。服务器启动没有任何问题,但我无法设法将本地kafka生产者/消费者连接到外部kafkapod。在集群内的kafka服务器映像上,我将bootstrap-server设置为:bin/kafka-topics.sh--create--bootst......
  • python llama_index.indices.list.retrievers 导入错误
    fromllama_indeximportGPTListIndexfromllama_index.indices.list.retrieversimportListIndexLLMRetrieverdocuments=SimpleDirectoryReader('./data').load_data()index=GPTListIndex.from_documents(documents,service_context=service_context)r......
  • 如何使用 python 和 bs4 修复抓取 web 表输出 csv
    请帮帮我,,我想在“td”、“Barcode”和“namaproduk”中获取2个数据,但我得到的数据非常糟糕。我应该修复什么?importcsvimportrequestsfrombs4importBeautifulSoupoutfile=open("dataaa.csv","w",newline='')writer=csv.writer(outfile)page=0whilepag......
  • 基于Django的超市小程序+47822(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、小
    基于django超市小程序摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,超市小程序被用户普遍使用,为方便用户能够可以随时进行超市小程序的数据信息管理,特开发了基于djan......
  • 【优秀python django系统案例】基于python的医院挂号管理系统,角色包括医生、患者、管
    随着信息技术的迅猛发展,传统的医院挂号管理方式面临着效率低下、排队时间长、信息不对称等诸多问题。这些问题不仅影响患者的就医体验,也加重了医院工作人员的负担。在此背景下,基于Python的医院挂号管理系统应运而生。该系统旨在通过信息化手段优化挂号流程,提高管理效率,提升医疗......
  • Python-PLAXIS自动化建模技术与典型岩土工程
    原文链接:Python-PLAXIS自动化建模技术与典型岩土工程https://blog.csdn.net/2301_78164062/article/details/140607885?spm=1001.2014.3001.5501一:Plaxis软件及PlaxisPythonAPI环境搭建1、Plaxis2D\Plaxis3D软件2、面向对象编程语言Python及其开发环境Spyder3、Plaxis输......
  • 在Conda环境中安装python内核
    我刚刚开始使用jupyter笔记本进行我的开发过程。我首先创建一个新的python环境:$condacreate-ntestenv然后激活它:$sourceactivatetestenv并安装python内核模块:$pipinstallipykernel现在,模糊性开始了。我只想专门为我的活动环境创建一个新内核。......
  • C++11 中的 python 海象运算符 (:=) 等效吗?
    最近我在Python中经常使用:=运算符,这样:ifmy_object:=SomeClass.function_that_returns_object():#dosomethingwiththisobjectifitexistsprint(my_object.some_attribute)问题有没有办法在c++11中做到这一点而不使用stdlib?例如......
  • Python 自动创建阿里云 OSS 桶并配置静态网站托管
    在本文中,我们将介绍如何使用Python和阿里云OSSSDK自动创建OSS桶(如果不存在),并为新创建的桶配置静态网站托管。这对于自动化部署和管理静态网站非常有用。前提条件安装阿里云OSSSDK:pipinstalloss2准备好阿里云OSS的访问密钥(AccessKeyID和AccessKeySecret......