[Python] Array Attributes of Numpy lib

本文详细介绍了NumPy中ndarray的各种属性,包括shape、ndim、size和dtype等,并通过一个具体的实例展示了如何使用这些属性来获取数组的维度、元素数量及数据类型等关键信息。

Attributes of numpy.ndarray:

import numpy as np 

def array():
    a = np.random.random((5,4))
    print(a.shape[0]) #number of rows, 5
    print(a.shape[1]) #number of columns, 4
    print(len(a.shape)) #2
    print(a.size) # 5*4=20
    print(a.dtype) #float64

if __name__ == "__main__":
    #gen_random() 
    array()   

 

clipped.to_netcdf(r'E:\Except-Desktop\DC\CMIP6-download\historical-uo\uo_c1.nc') File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\core\dataset.py", line 2029, in to_netcdf return to_netcdf( # type: ignore[return-value] # mypy cannot resolve the overloads:( File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\api.py", line 1984, in to_netcdf dump_to_store( File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\api.py", line 2031, in dump_to_store store.store(variables, attrs, check_encoding, writer, unlimited_dims=unlimited_dims) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\common.py", line 470, in store variables, attributes = self.encode(variables, attributes) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\common.py", line 653, in encode variables, attributes = cf_encoder(variables, attributes) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\conventions.py", line 798, in cf_encoder new_vars[k] = encode_cf_variable(v, name=k) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\conventions.py", line 102, in encode_cf_variable var = coder.encode(var, name=name) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\coding\times.py", line 1375, in encode (data, units, calendar) = encode_cf_datetime(data, units, calendar, dtype) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\coding\times.py", line 1018, in encode_cf_datetime return _lazily_encode_cf_datetime(dates, units, calendar, dtype) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\coding\times.py", line 1201, in _lazily_encode_cf_datetime raise ValueError( ValueError: When encoding chunked arrays of datetime values, both the units and dtype must be prescribed or both must be unprescribed. Prescribing only one or the other is not currently supported. Got a units encoding of days since 1850-01-01 and a dtype encoding of None. Raised while encoding variable 'time_bnds' with value <xarray.Variable (time: 780, bnds: 2, y: 2, x: 1)> Size: 25kB dask.array<where, shape=(780, 2, 2, 1), dtype=datetime64[ns], chunksize=(1, 2, 2, 1), chunktype=numpy.ndarray> Attributes: coordinates: latitude longitude
09-05
Traceback (most recent call last): File "C:/Users/ASUS/AppData/Local/Programs/Python/Python313/DC-run/8.27程序包/裁剪空间1.py", line 31, in <module> clipped.to_netcdf(r'E:\Except-Desktop\DC\CMIP6-download\historical-dissic\dissic_c1.nc') File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\core\dataset.py", line 2029, in to_netcdf return to_netcdf( # type: ignore[return-value] # mypy cannot resolve the overloads:( File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\api.py", line 1984, in to_netcdf dump_to_store( File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\api.py", line 2031, in dump_to_store store.store(variables, attrs, check_encoding, writer, unlimited_dims=unlimited_dims) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\common.py", line 470, in store variables, attributes = self.encode(variables, attributes) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\common.py", line 653, in encode variables, attributes = cf_encoder(variables, attributes) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\conventions.py", line 798, in cf_encoder new_vars[k] = encode_cf_variable(v, name=k) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\conventions.py", line 102, in encode_cf_variable var = coder.encode(var, name=name) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\coding\times.py", line 1375, in encode (data, units, calendar) = encode_cf_datetime(data, units, calendar, dtype) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\coding\times.py", line 1018, in encode_cf_datetime return _lazily_encode_cf_datetime(dates, units, calendar, dtype) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\coding\times.py", line 1201, in _lazily_encode_cf_datetime raise ValueError( ValueError: When encoding chunked arrays of datetime values, both the units and dtype must be prescribed or both must be unprescribed. Prescribing only one or the other is not currently supported. Got a units encoding of days since 1850-01-01 and a dtype encoding of None. Raised while encoding variable 'time_bnds' with value <xarray.Variable (time: 780, bnds: 2, i: 3, j: 3)> Size: 112kB dask.array<where, shape=(780, 2, 3, 3), dtype=object, chunksize=(1, 2, 3, 3), chunktype=numpy.ndarray> Attributes: coordinates: latitude longitude
08-29
程序: import xarray as xr import numpy as np import cftime # 文件路径 input_file = r'E:\Except-Desktop\DC\CMIP6-download\historical-pp\pp_185001-201412.nc' # 输入文件名 output_file = r'E:\Except-Desktop\DC\CMIP6-download\historical-pp\pp_c1.nc' # 输出文件名 # 定义裁剪时间范围 start_time = cftime.DatetimeNoLeap(1961, 1, 1) end_time = cftime.DatetimeNoLeap(2014, 12, 31) # 打开NetCDF文件 ds = xr.open_dataset(input_file) # 裁剪时间范围 ds_time = ds.sel(time=slice(start_time, end_time)) # 保存裁剪后的数据到新文件 ds_time.to_netcdf(output_file) print(f"数据已裁剪并保存至 {output_file}") 输出: Warning (from warnings module): File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\conventions.py", line 204 var = coder.decode(var, name=name) SerializationWarning: variable 'pp' has multiple fill values {np.float32(1e+20), np.float64(1e+20)} defined, decoding all values to NaN. Traceback (most recent call last): File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\DC-run\8.27程序包\裁剪时间.py", line 23, in <module> ds_time.to_netcdf(output_file) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\core\dataset.py", line 2029, in to_netcdf return to_netcdf( # type: ignore[return-value] # mypy cannot resolve the overloads:( File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\api.py", line 1984, in to_netcdf dump_to_store( File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\api.py", line 2031, in dump_to_store store.store(variables, attrs, check_encoding, writer, unlimited_dims=unlimited_dims) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\common.py", line 470, in store variables, attributes = self.encode(variables, attributes) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\common.py", line 653, in encode variables, attributes = cf_encoder(variables, attributes) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\conventions.py", line 798, in cf_encoder new_vars[k] = encode_cf_variable(v, name=k) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\conventions.py", line 102, in encode_cf_variable var = coder.encode(var, name=name) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\coding\times.py", line 1362, in encode variable.data.dtype, np.datetime64 File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\core\variable.py", line 436, in data duck_array = self._data.get_duck_array() File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\core\indexing.py", line 843, in get_duck_array self._ensure_cached() File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\core\indexing.py", line 840, in _ensure_cached self.array = as_indexable(self.array.get_duck_array()) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\core\indexing.py", line 797, in get_duck_array return self.array.get_duck_array() File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\coding\common.py", line 80, in get_duck_array return self.func(self.array.get_duck_array()) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\core\indexing.py", line 652, in get_duck_array array = self.array[self.key] File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\netCDF4_.py", line 108, in __getitem__ return indexing.explicit_indexing_adapter( File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\core\indexing.py", line 1021, in explicit_indexing_adapter result = raw_indexing_method(raw_key.tuple) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python313\Lib\site-packages\xarray\backends\netCDF4_.py", line 121, in _getitem array = getitem(original_array, key) File "src\\netCDF4\\_netCDF4.pyx", line 5079, in netCDF4._netCDF4.Variable.__getitem__ File "src\\netCDF4\\_netCDF4.pyx", line 6028, in netCDF4._netCDF4.Variable._get numpy._core._exceptions._ArrayMemoryError: Unable to allocate 4.45 GiB for an array with shape (648, 15, 384, 320) and data type float32 Raised while encoding variable 'pp' with value <xarray.Variable (time: 648, lev: 15, nlat: 384, nlon: 320)> Size: 5GB [1194393600 values with dtype=float32] Attributes: (12/20) cell_measures: area: areacello volume: volcello cell_methods: area: mean where sea time: mean comment: photoC_TOT description: total primary (organic carbon) production by phytoplankton frequency: mon id: pp ... ... time_title: Temporal mean title: Primary Carbon Production by Phytoplankton type: real units: mol m-3 s-1 variable_id: pp coordinates: time lev lat lon
09-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值