社区首页 >问答首页 >ValueError:小端编译器不支持大端缓冲区

ValueError:小端编译器不支持大端缓冲区
EN

Stack Overflow用户
提问于 2020-02-11 03:51:45
回答 1查看 3.8K关注 0票数 3

我正在使用PVlib为PV阵列建模,有时当我试图访问天气预报数据时,我会得到以下错误:

代码语言:javascript
代码运行次数:0
复制
ValueError: Big-endian buffer not supported on little-endian compiler

我不确定为什么它只是偶尔发生,而不是每次我运行代码的时候。下面是我正在运行的代码,最后一行是导致错误的那一行。任何帮助解决这个问题的人都将不胜感激,谢谢!

代码语言:javascript
代码运行次数:0
复制
# built-in python modules
import datetime
import inspect
import os
import pytz

# scientific python add-ons
import numpy as np
import pandas as pd

# plotting
# first line makes the plots appear in the notebook
%matplotlib inline 
import matplotlib.pyplot as plt
import matplotlib as mpl

#import the pvlib library
from pvlib import solarposition,irradiance,atmosphere,pvsystem
from pvlib.forecast import GFS
from pvlib.modelchain import ModelChain

pd.set_option('display.max_rows', 500)

latitude, longitude, tz = 21.300268, -157.80723, 'Pacific/Honolulu' 

# specify time range.
# start = pd.Timestamp(datetime.date.today(), tz=tz)
pacific = pytz.timezone('Etc/GMT+10')
# print(pacific)
# datetime.datetime(year, month, day, hour, minute, second, microsecond, tzinfo)
start2 = pd.Timestamp(datetime.datetime(2020, 2, 10, 13, 0, 0, 0, pacific))
# print(start)
# print(start2)
# print(datetime.date.today())

end = start2 + pd.Timedelta(days=1.5)

# Define forecast model
fm = GFS()

# get data from location specified above
forecast_data = fm.get_processed_data(latitude, longitude, start2, end)
# print(forecast_data)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-29 15:54:19

我想我现在有一个解决方案了。由于某些原因,来自这些UNIDATA DCSS查询的数据偶尔会返回大端字节。这与讨论的here中的熊猫数据帧或系列对象不兼容。我在PVLIB中找到了从NetCDF4获取数据并创建Pandas Dataframe的函数。查看pvlib内部,然后查看forecast.py,该函数名为_netcdf2pandas。我将复制下面的源代码:

代码语言:javascript
代码运行次数:0
复制
data_dict = {}
for key, data in netcdf_data.variables.items():
    # if accounts for possibility of extra variable returned
    if key not in query_variables:
        continue
    squeezed = data[:].squeeze()
    if squeezed.ndim == 1:
        data_dict[key] = squeezed
    elif squeezed.ndim == 2:
        for num, data_level in enumerate(squeezed.T):
            data_dict[key + '_' + str(num)] = data_level
    else:
        raise ValueError('cannot parse ndim > 2')

data = pd.DataFrame(data_dict, index=self.time)

目标是将NetCDF4数据压缩到单个熊猫系列中,将每个系列保存到字典中,然后将所有数据导入数据框并返回。我所做的就是在这里添加一个检查,以确定压缩的序列是否为Big-Endian,并将其转换为Little-Endian。我修改后的代码如下:

代码语言:javascript
代码运行次数:0
复制
for key, data in netcdf_data.variables.items():
    # if accounts for possibility of extra variable returned
    if key not in query_variables:
        continue
    squeezed = data[:].squeeze()

    # If the data is big endian, swap the byte order to make it little endian
    if squeezed.dtype.byteorder == '>':
        squeezed = squeezed.byteswap().newbyteorder()

    if squeezed.ndim == 1:
        data_dict[key] = squeezed
    elif squeezed.ndim == 2:
        for num, data_level in enumerate(squeezed.T):
            data_dict[key + '_' + str(num)] = data_level
    else:
        raise ValueError('cannot parse ndim > 2')

data = pd.DataFrame(data_dict, index=self.time)

我使用this Stack Overflow answer来确定每个序列的字节顺序。SciPy documentation给了我一些线索,告诉我这些字节顺序可能是什么类型的数据。

Here is my pull request to pv-lib that fixes the problem for me。我希望这能帮到你。我仍然不知道为什么这个问题是不一致的。大约95%的情况下,我的get_processed_data尝试都会失败。当它起作用时,我认为我找到了修复方法,然后Pandas就会抛出endian错误。在对pv-lib进行修复之后,我不会再收到来自Pandas的关于大小字节序的错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60161759

复制
相关文章
当集合名称带有特殊字符时,无法从mongodb删除集合
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/290
joshua317
2022/12/09
6990
如何从列表中获取元素
观察URAM的物理管脚,不难发现A/B端口都有相应的地址、使能、读写控制信号。与BRAM不同的是URAM的读写使能信号是同一个管脚RDB_WR_A/B,其为0时执行读操作,为1时执行写操作,这意味着一旦A/B端口独立,同一端口的读写操作就无法同时发生,因此,如果采用上一篇文章中介绍的方法将其配置为两个独立的单端口RAM,其读写行为与常规的单端口RAM是不同的,进一步而言,此时的读写行为类似于NO_Change模式。
Lauren的FPGA
2019/10/30
17.3K0
Python 获取被调用函数名称,所处模块,被调用代码行
print(sys._getframe().f_code.co_filename)
授客
2019/09/11
2.5K0
Python 获取被调用函数名称,所处模块,被调用代码行
arcengine开发如何遍历MapControl和PageLaoutControl中的图层,获取图层名称
一般的GIS开发者都知道arcengine开发中如何遍历MapControl中的图层,代码如下:
acoolgiser
2019/01/17
2.3K0
js中,如何获取批量传入文件的大小,名称,进行循环展示。
<div class="handle"> <div class="handle-box" id="drop_area" v-on:drop="dropClick"> <div class="handle-btn"> <img class="btn-icon" src="./images/compress/new-btn-icon.png" alt="">
用户4344670
2022/09/02
10K0
C/C++ 调用API获取当前时间
#include <string> #include<iostream> #include<windows.h> #include <sstream> using namespace std; string WORDToString(WORD w) {     char tmpbuff[16];     sprintf(tmpbuff,"%d",w);     string res=tmpbuff;     return res; } string getTime() {     string week
微软技术分享
2022/12/28
6680
在不是Thread类的子类中,如何获取线程对象的名称呢?
我想要获取main方法所在的线程对象的名称,该怎么办呢?   遇到这种情况,Thread类就提供了一个很好玩的方法:     public static Thread currentThread()
黑泽君
2018/10/11
4.9K0
ES中的api调用测试
SearchRequest可用于与搜索文档、聚合、建议有关的任何操作,还提供请求突出显示结果文档的方法。 
一个风轻云淡
2023/10/15
2240
调用谷歌翻译接口_api如何调用
在平时使用谷歌翻译的过程中,经常会遇到需要批量翻译大量文本的情景,这种时候需要调用谷歌翻译的API
全栈程序员站长
2022/11/03
4.7K0
【DB笔试面试739】在Oracle中,如何获取集群的名称(Cluster name)?
集群名称信息是记录在OCR中的,因此可以通过转储OCR的方法来获得集群名称,另外,也可以使用cemutlo工具直接查看集群名称信息,如下所示:
AiDBA宝典
2020/02/24
2.2K0
从0到1开发测试平台(十六)如何调用Jmeter的Api
通过之前的篇幅我们了解了测试用例管理页面如何编写,接下来我们这篇将介绍性能测试平台核心部分代码-使用jmeter提供的api来实现性能测试用例的执行。jmeter是通过解析执行jmx文件来运行脚本的,执行过程中会往jtl文件存入摘要日志,然后通过jtl来生成性能测试报告,jmeter自然也提供了这一套流程的api,大致的执行流程图如下图所示:
周辰晨
2021/04/26
2.5K2
从0到1开发测试平台(十六)如何调用Jmeter的Api
laravel-admin select、multipleSelect从api中获取选项列表
select、multipleSelect从api中获取选项列表 $form->select($column[, $label])->options([1 => 'foo', 2 => 'bar', 'val' => 'Option name']); 或者从api中获取选项列表: $form->select($column[, $label])->options('/api/users'); 其中api接口的格式必须为下面格式: [ { "id": 9, "tex
友儿
2022/09/11
3.8K0
Spring 如何从 IoC 容器中获取对象?
前面几篇文章主要分析了 Spring IoC 容器如何初始化,以及解析和注册我们定义的 bean 信息。
WriteOnRead
2021/03/12
9.7K0
Spring 如何从 IoC 容器中获取对象?
使用GuzzleHttp从HTTP调用获取cookie的值
- 发送登录请求以后想看Cookies的值,文档只提供直接使用Cookie没有查看值的介绍,下面给大家讲一下实现代码。 实现代码
axiomxs
2021/11/26
4.5K0
如何获取云API密钥?
云 API 是腾讯云开放生态的基石。通过云 API,只需少量的代码即可快速操作云产品;在熟练的情况下,使用云 API 完成一些频繁调用的功能可以极大提高效率;除此之外,通过 API 可以组合功能,实现更高级的功能,易于自动化, 易于远程调用, 兼容性强,对系统要求低。以下是具体操作步骤:
腾讯云@移动安全
2019/01/18
82.4K42
如何获取云API密钥?
如何用 Python 调用 OpenAI API?
如果我能通过Python使用Chatgpt接口,又能通过Chatgpt学习Python,岂不是很快乐。
朱卫军 AI Python
2023/02/23
11K1
如何用 Python 调用 OpenAI API?
从Python调用堆栈获取行号等信息
程序中的日志打印,或者消息上传,比如kafka消息等等。经常上传的消息中需要上传堆栈信息中的文件名、行号、上层调用者等具体用于定位的消息。Python提供了以下两种方法:
职场亮哥
2020/10/10
2.6K0
Python调用微博API获取微博内容
    使用自己的微博账号登录微博开放平台(http://open.weibo.com/),在微博开放中心下“创建应用”创建一个应用,应用信息那些随便填,填写完毕后,不需要提交审核,需要的只是那个app-key和app-secret
py3study
2020/01/10
4K0
Python调用微博API获取微博内容
【说站】python 如何调用api
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
很酷的站长
2022/11/24
1.6K0
【说站】python 如何调用api
点击加载更多

相似问题

如何从workfront api获取集合名称列表

15

如何从forerunnerdb获取集合名称

12

如何从以userid作为集合名称的集合中获取文档

14

如何从集合中获取api返回的数据?

10

从firebase文档中获取集合名称

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文