我有一些包含掩盖元素的数组(Numpy.MaskedArray例如)
data = [0,1,masked,3,masked,5,...]
Run Code Online (Sandbox Code Playgroud)
掩模不遵循规则图案的地方.
我想遍历数组并简单地删除所有被屏蔽的元素以结束:
data = [0,1,3,5,...]
Run Code Online (Sandbox Code Playgroud)
我尝试了一个循环:
for i in xrange(len(data)):
if np.ma.is_masked(data[i]):
data.pop(i)
Run Code Online (Sandbox Code Playgroud)
但我得到错误: local variable 'data' referenced before assignment
我是否必须创建一个新数组并添加未屏蔽的元素?或者是否有MaskedArray可以自动执行此操作的功能?我看过文档,但对我来说并不明显.
谢谢!
我想从列表中随机删除一部分元素,而无需更改列表的顺序。
假设我有一些数据,但我想删除其中的1/4:
data = [1,2,3,4,5,6,7,8,9,10]
n = len(data) / 4
Run Code Online (Sandbox Code Playgroud)
我在想我需要一个循环来遍历数据并删除一个随机元素'n'次?所以像这样:
for i in xrange(n):
random = np.randint(1,len(data))
del data[random]
Run Code Online (Sandbox Code Playgroud)
我的问题是,这是最“ Pythonic”的方式吗?我的列表将有大约5000个元素,我想使用不同的'n'值进行多次。
谢谢!
我正在尝试打印天文学模拟的输出,以便它在我的控制台中看起来不错。我生成了 4 个 numpy 数组,分别称为振幅、质量、周期和偏心率,我想将它们放在一个表中。每个数组的第一个索引是行星 1 的值,第二个索引是行星 2 的值,依此类推。
所以我的数组看起来像(值都是浮点数,例如“a1”只是一个占位符):
amp = [a1 a2 a3 a4]
mass = [m1 m2 m3 m4]
period = [p1 p2 p3 p4]
ecc = [e1 e2 e3 e4]
Run Code Online (Sandbox Code Playgroud)
我希望我的桌子看起来像:
planet|amp|mass|period|ecc
1 |a1 |m1 |p1 |e1
2 |a2 |m2 |p2 |e2
...
Run Code Online (Sandbox Code Playgroud)
我尝试过使用 tabulate 和类似的东西:
print tabulate(['1', amp[0], mass[0], period[0], ecc[0]], headers=[...])
Run Code Online (Sandbox Code Playgroud)
但我收到“numpy.float64”对象不可迭代的错误
任何帮助,将不胜感激!
我有一些数据看起来像:
data = [1,2,4,5,9] (递增整数的随机模式)
我想将它绘制在一条二进制水平线上,以便 y=1 中指定的每个 x 值data,否则为零。
我有几个不同的data数组想要堆叠,类似于这种样式(这是 CCD 时钟数据,但绘图格式看起来很理想)
我想我需要为我的数据数组创建一个列表,但是如何为不在数组中的所有内容指定零值?
谢谢
我有一个形状为 (100,50,50) 的 3D 矩阵,例如
import numpy as np
data = np.random.random(100,50,50)
Run Code Online (Sandbox Code Playgroud)
我想创建一个动画,将每个大小为 (50,50) 的 2D 切片显示为热图或imshow
例如:
import matplotlib.pyplot as plt
plt.imshow(data[0,:,:])
plt.show()
Run Code Online (Sandbox Code Playgroud)
将显示该动画的第一个“帧”。我还想在 Jupyter Notebook 中显示此内容。我目前正在按照本教程将内联笔记本动画显示为 html 视频,但我不知道如何用 2D 数组的切片替换 1D 行数据。
我知道我需要创建一个绘图元素、一个初始化函数和一个动画函数。按照这个例子,我尝试过:
fig, ax = plt.subplots()
ax.set_xlim((0, 50))
ax.set_ylim((0, 50))
im, = ax.imshow([])
def init():
im.set_data([])
return (im,)
# animation function. This is called sequentially
def animate(i):
data_slice = data[i,:,:]
im.set_data(i)
return (im,)
# call the animator. blit=True means only re-draw the parts that …Run Code Online (Sandbox Code Playgroud) 我有一个 2D 数组正弦模式,想要绘制该函数的 x 和 y 梯度。我有一个二维数组image_data:
def get_image(params):
# do some maths on params
return(image)
params = (a, b, c)
image_data = get_image(params)
Run Code Online (Sandbox Code Playgroud)
我用来numpy.gradient获取渐变:
gradients = numpy.gradient(image_data)
x_grad = gradients[0]
y_grad = gradients[1]
Run Code Online (Sandbox Code Playgroud)
绘制所有三个看起来像:
此图案不是 45 度。我希望 x 和 y 梯度不同。在我看来,应该是相对于两侧索引x_gradient[i][j]的梯度以及相对于上方和下方索引的梯度。由于图案稍微倾斜,因此梯度以不同的速率变化。image_data[i][j]y_gradient[i][j]image_data
我是否误解了我的数据或不理解numpy.gradient输出?
我试图建模并适应长时间序列中的噪声数据,我想看看如果我删除了大量的数据,我的拟合会发生什么.
我有很长的时间序列数据,我只对每个第n项感兴趣.但是,我仍然希望随着时间的推移绘制此列表,但删除了所有其他不需要的元素.
例如,对于n = 4,列表
a = [1,2,3,4,5,6,7,8,9,10...]
Run Code Online (Sandbox Code Playgroud)
应该成为
a_new = [1,0,0,0,5,0,0,0,9,0...]
Run Code Online (Sandbox Code Playgroud)
我不介意第n个项目的位置是否在序列的开头或结尾,我的系列实际上是任意的,并且很长以至于我删除的内容都无关紧要.例如'a_new'也可以是:
a_new = [0,0,0,4,0,0,0,8,0,0...]
Run Code Online (Sandbox Code Playgroud)
理想情况下,解决方案不依赖于列表的长度,但我可以将该长度作为变量.
编辑1:
我实际上想要空元素,而不是零,(如果可能的话?)所以:
a_new = [1,,,,5,,,,9...]
Run Code Online (Sandbox Code Playgroud)
编辑2:
我还需要从我的时间序列中删除相应的元素,以便在绘制所有内容时,每个数据元素与时间序列元素具有相同的索引.
谢谢!
我正在将对数正态pdf拟合到一些合并的数据,但是我的曲线与数据不太匹配,请参见下图。我的代码是:
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import lognorm
data = genfromtxt('data.txt')
data = np.sort(data)
# plot histogram in log space
ax.hist(data, bins=np.logspace(0,5,200),normed=1)
ax.set_xscale("log")
shape,loc,scale = lognorm.fit(data)
print shape, loc, scale
pdf = sp.stats.lognorm.pdf(data, shape, loc, scale)
ax.plot(data,pdf)
plt.show()
Run Code Online (Sandbox Code Playgroud)
看起来是这样的:
我是否需要以某种方式为形状,位置和比例提供合理的猜测?
谢谢!
我有两个相等长度的列表,一个是数据系列,另一个是时间序列.它们代表随时间测量的模拟值.
我想创建一个函数,从两个列表中随机删除一个设定的百分比或分数.即如果我的分数是0.2,我想从两个列表中随机删除20%的项目,但它们必须是相同的项目(每个列表中的相同索引)被删除.
例如,设n = 0.2(要删除20%)
a = [0,1,2,3,4,5,6,7,8,9]
b = [0,1,4,9,16,25,36,49,64,81]
Run Code Online (Sandbox Code Playgroud)
随机删除20%后,它们就变成了
a_new = [0,1,3,4,5,6,8,9]
b_new = [0,1,9,16,25,36,64,81]
Run Code Online (Sandbox Code Playgroud)
这种关系并不像示例那么简单,所以我不能只在一个列表上执行此操作,然后计算出第二个; 它们已经存在为两个列表.他们必须保持原始秩序.
谢谢!
初学者在这里,寻找有关输入验证的信息。
我希望用户输入两个值,一个必须是大于零的整数,下一个是 1-10 之间的整数。我已经看到很多输入验证函数对于这两个简单的情况似乎过于复杂,有人可以帮忙吗?
对于第一个数字(大于 0 的整数,我有):
while True:
try:
number1 = int(input('Number1: '))
except ValueError:
print("Not an integer! Please enter an integer.")
continue
else:
break
Run Code Online (Sandbox Code Playgroud)
这也不会检查它是否为阳性,我希望它这样做。我还没有为第二个准备任何东西。任何帮助表示赞赏!