首先,在此问题被标记为重复之前,我知道其他人已经提出类似的问题,但似乎没有明确的解释.我正在尝试将二进制文件读入二维数组(在此处有详细记录http://nsidc.org/data/docs/daac/nsidc0051_gsfc_seaice.gd.html).
标头是一个300字节的数组.
到目前为止,我有;
import struct
with open("nt_197912_n07_v1.1_n.bin",mode='rb') as file:
filecontent = file.read()
x = struct.unpack("iiii",filecontent[:300])
Run Code Online (Sandbox Code Playgroud)
抛出字符串参数长度的错误.
假设我有以下脚本生成一个图(如下所示),其中一些数据点有阴影线.在DPI = 200时,阴影频率(点之间的空间)是好的,但是如果我想增加绘图的分辨率(例如DPI = 600),则点变得非常精细.有没有办法设置点之间的差距?提前致谢.
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.basemap import Basemap
Sig = np.random.rand(50,50)
Sig = np.ma.masked_greater(Sig, 0.25)
f, ax1 = plt.subplots(1,1)
ax1.pcolor(np.linspace(0,90,50),np.linspace(0,50,50),Sig, hatch=".",alpha=0)
fig = plt.gcf()
fig.set_size_inches(8, 8)
fig.savefig('Trial.png',bbox_inches='tight', dpi=200)
Run Code Online (Sandbox Code Playgroud)
我需要将大(+ 15GB)NetCDF文件读入一个程序,该程序包含一个3D变量(等时间作为记录维度,数据是纬度经度).
我正在以3级嵌套循环处理数据(如果NetCDF通过某个标准,则检查NetCDF的每个块.例如;
from netCDF4 import Dataset
import numpy as np
File = Dataset('Somebigfile.nc', 'r')
Data = File.variables['Wind'][:]
Getdimensions = np.shape(Data)
Time = Getdimensions[0]
Latdim = Getdimensions[1]
Longdim = Getdimensions[2]
for t in range(0,Time):
for i in range(0,Latdim):
for j in range(0,Longdim):
if Data[t,i,j] > Somethreshold:
#Do something
Run Code Online (Sandbox Code Playgroud)
无论如何,我一次可以在NetCDF文件中读取一次记录吗?大大减少内存使用量.任何帮助非常感谢.
我知道NCO运算符,但在使用脚本之前不希望使用这些方法来分解文件.
这是一个有趣的话题,因为它可能会导致代码中出现意外结果。假设我有一个如下数组;
import numpy as np
X = np.array([np.nan,np.nan,np.nan,np.nan,np.nan])
Run Code Online (Sandbox Code Playgroud)
np.nanmean(X)正确返回平均切片为空的警告并返回 nan。但是,在对数组求和时np.nansum(X),返回0.0。现在虽然数学上正确(无之和为 0),但预期返回的结果可能是 np.nan。
例如,我有一个函数,如果不存在冰数据文件,它将创建一个空的 nan 数组(180x360 点,每个点代表一个纬度/经度)。然后将此数组传递给一个函数,该函数对数组求和以找出数组中的冰总量。如果预期值为 9-1000 万平方公里,而 nansum 返回 0,这可能会产生误导。如果冰范围无论如何都在 0 左右,这将特别困难。在下图中,这显然是导致冰总和为 0.0 的缺失数据文件,但并非所有情况都如此清晰。
我在开发网站上看到了这个讨论,想知道为什么没有 kwarg 选项可以在np.nansum()需要时返回 np.nan,并且 B,如果整个矩阵充满了,是否有一个函数返回 True/False楠?