我想对多维 ndarray 进行切片,但不知道要在哪个维度上进行切片。假设我们有一个形状为 (6,7,8) 的 ndarray A。有时我需要在第一维 A[:,3,4] 上切片,有时在第三维 A[1,2,:] 上切片。
有没有代表“:”的符号?我想用它来生成索引数组。
index=np.zeros(3)
index[0]=np.:
index[1]=3
index[2]=4
A[index]
Run Code Online (Sandbox Code Playgroud) 我正在尝试读取一个 fortran 文件,其标题为整数,然后实际数据为 32 位浮点数。使用 numpyfromfile('mydatafile', dtype=np.float32)它将整个文件读取为 float32,但我需要输出文件的标头位于 int32 中。使用 scipy 的 FortranFile 它读取标题:
f = FortranFile('mydatafile', 'r')
headers = f.read_ints(dtype=np.int32)
Run Code Online (Sandbox Code Playgroud)
但当我这样做时:
data = f.read_reals(dtype=np.float32)
Run Code Online (Sandbox Code Playgroud)
它返回一个空数组。我知道它不应该为空,因为使用 numpy 的 fromfile 它会读取所有数据。奇怪的是,scipy 方法适用于我的数据集中的其他文件,但不适用于这个。也许我不理解 numpy 和 scipy 的两种读取方法之间的区别。使用任一方法读取文件时,是否有办法隔离标头 ( dtype=np.int32) 和数据 ( )?dtype=np.float32
如何在不重新启动 python 的情况下再次看到警告。现在我只见到他们一次。
例如考虑以下代码:
import pandas as pd
pd.Series([1]) / 0
Run Code Online (Sandbox Code Playgroud)
我明白了
RuntimeWarning: divide by zero encountered in true_divide
Run Code Online (Sandbox Code Playgroud)
但当我再次运行它时,它会默默执行。
如何在不重新启动 python 的情况下再次看到警告?
我尝试过做
del __warningregistry__
Run Code Online (Sandbox Code Playgroud)
但这没有帮助。
似乎只存储了某些类型的警告。例如,如果我这样做:
def f():
X = pd.DataFrame(dict(a=[1,2,3],b=[4,5,6]))
Y = X.iloc[:2]
Y['c'] = 8
Run Code Online (Sandbox Code Playgroud)
那么这只会在第一次f()调用时发出警告。但是,现在什么时候del __warningregistry__我才能再次看到警告。
第一次警告和第二次警告有什么区别?为什么只有第二个存储在其中__warningregistry__?第一个存储在哪里?
将 math.ceil 应用于整个数组的正确方法是什么?请参阅以下Python代码:
index = np.zeros(len(any_array))
index2 = [random.random() for x in xrange(len(any_array))
##indexfinal=math.ceil(index2) <-?
Run Code Online (Sandbox Code Playgroud)
我想返回数组中每个元素的上限值。文档指出 math.ceil 返回任何输入 x 的上限,但是将此上限函数应用于数组中包含的每个元素的最佳方法是什么?
我正在使用 matplotlib 在 python 中绘制二维数组,但在格式化刻度线时遇到问题。首先,我的数据目前被组织为带有(海拔、纬度)的二维数组。我正在绘制电子密度值作为高度和纬度的函数(基本上是特定时间的纵向切片)。
我想以 30 度为间隔标记从 -90 到 90 度的 x 轴,并使用另一个高程数组标记 y 值(每个模型运行都有不同的高程值,因此我无法手动分配任意高程)。我有一个带有纬度值的数组,另一个带有海拔值的数组都是一维数组。
这是我的代码:
from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt
#load the netcdf file into a variable
mar120="C:/Users/WillEvo/Desktop/sec_giptie_cpl_mar_120.nc"
#grab the data into a new variable
fh=Dataset(mar120,mode="r")
#assign model variable contents to python variables
lons=fh.variables['lon'][:]
lats=fh.variables['lat'][:]
var1=fh.variables['UN'][:]
#specifying which time and elevation to map
ionst=var1[0,:,:,21]
ionst=ionst[0:len(ionst)-1]
#close the netCDF file
fh.close()
#Set the figure, size, and resolution
plt.figure(figsize=(8,6), dpi=100, facecolor='white')
plt.subplot(1,1,1)
plt.imshow(ionst, …Run Code Online (Sandbox Code Playgroud) 我在Python中有以下问题需要解决:
给定两个坐标矩阵 (NumPy ndarrays) A和B,查找中相应坐标向量a中的所有坐标向量,使得欧几里得距离最小。坐标矩阵和可以具有不同数量的坐标向量(即不同的行数)。AbB||a-b||AB
此方法应返回一个坐标向量矩阵,其中中的C第 i 个向量是与中的第 i 个坐标向量的欧几里德距离最小化的向量。cCBaA
例如,假设
A = np.array([[1,1], [3,4]])和B = np.array([[1,2], [3,6], [8,1]])
向量[1,1]inA和向量 in之间的欧几里德距离B为:
1, 5.385165, 7
Run Code Online (Sandbox Code Playgroud)
所以第一个向量C是[1,2]
[3,4]类似地,向量inA和向量 in的距离B为:
2.828427, 2, 5.830952
Run Code Online (Sandbox Code Playgroud)
所以第二个也是最后一个向量C将是[3,6]
所以C = [[1,2], [3,6]]
如何在 Python 中高效地编写此代码?
给定一组描述 2D 平面中某些轨迹的点,我想通过局部高阶插值提供该轨迹的平滑表示。
例如,假设我们在下图中定义了一个具有 11 个点的 2D 圆。我想按顺序在每对连续点之间添加点或产生平滑的轨迹。在每个线段上添加点很容易,但它会产生“局部线性插值”典型的斜率不连续性。当然这不是经典意义上的插值,因为
y对于给定的函数可以有多个值x 所以我不确定什么是合适的词汇。

生成该图的代码可以在下面找到。使用该lin_refine_implicit函数执行线性插值。我正在寻找一个更高阶的解决方案来产生平滑的轨迹,我想知道是否有一种方法可以使用 Scipy 中的经典函数来实现它?我尝试使用各种一维插值,但scipy.interpolate没有取得太大成功(同样是因为y给定的多个值x)。
最终目标是使用这种方法通过离散测量提供平滑的 GPS 轨迹,所以我认为这应该在某个地方有一个经典的解决方案。
import numpy as np
import matplotlib.pyplot as plt
def lin_refine_implicit(x, n):
"""
Given a 2D ndarray (npt, m) of npt coordinates in m dimension, insert 2**(n-1) additional points on each trajectory segment
Returns an (npt*2**(n-1), m) ndarray
"""
if n > 1:
m = 0.5*(x[:-1] + x[1:])
if x.ndim == 2:
msize = …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 python \ numpy 中实现对 Matlab 元胞数组的模拟。Matlab 代码如下:
for n=1:10
C{n} = rand(1,n);
end
Run Code Online (Sandbox Code Playgroud)
请注意,每个单元格元素都有不同的长度。现在在 numpy 中:
for n in np.arange(10):
C[n] = np.random.rand(1,n)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,我该怎么做才能实现这个?
我有一个具有很多简并特征值的实对称矩阵,我想找到该矩阵的实值特征向量。我正在努力寻找 numpy 或 scipy 中的一种方法来为我做到这一点,我尝试过的方法给出了复值特征向量。有谁知道这样的功能是否存在?
如何从、和x的连续三角形分布中进行绘制并获取特定值的 CDF 。我不明白如何设置参数。我想要得到相当于在 中做的事情。 mode=0lower limit=-1upper limit=1numpyp.random.triangular(left=-1, mode=0, right=1)Scipy
我尝试了以下操作,但我不确定这是否是我所追求的。
scipy.stats.triang.cdf([-1,-0.5,0,0.5,1], c=0.5, loc=-1, scale=2)并获得:array([ 0, 0.125, 0.5, 0.875, 1.])这似乎是正确的。
我不明白为什么
scipy.stats.triang.expect(func=lambda x: x, c = 0.5, loc=0.5, scale=1)
正在产生错误消息
_argcheck() missing 1 required positional argument: 'c'
尽管c提供了论据。