我有一些数据,我从雷达卫星图像中采样,想要进行一些统计测试.在此之前,我想进行常态测试,以确保我的数据是正常分布的.我的数据似乎是正常分布的,但是当我执行测试时,得到Pvalue为0,表明我的数据不是正常分布的.
我已经附加了我的代码以及分布的输出和直方图(我对python相对较新,所以如果我的代码以任何方式笨拙而道歉).谁能告诉我,如果我做错了什么 - 我发现我的直方图很难相信我的数据不是正常分布的?
values = 'inputfile.h5'
f = h5py.File(values,'r')
dset = f['/DATA/DATA']
array = dset[...,0]
print('normality =', scipy.stats.normaltest(array))
max = np.amax(array)
min = np.amin(array)
histo = np.histogram(array, bins=100, range=(min, max))
freqs = histo[0]
rangebins = (max - min)
numberbins = (len(histo[1])-1)
interval = (rangebins/numberbins)
newbins = np.arange((min), (max), interval)
histogram = bar(newbins, freqs, width=0.2, color='gray')
plt.show()
Run Code Online (Sandbox Code Playgroud)
这打印出:(41099.095955202931,0.0).第一个元素是卡方值,第二个元素是p值.
我已经附上了我所附数据的图表.我认为可能因为我正在处理负值而导致问题因此我将值标准化但问题仍然存在.

我想写一些数据,我必须在csv文件中创建一个直方图.我有我的'箱'列表,我有'频率'列表.有人可以给我一些帮助,将它们写入各自列中的csv吗?
即第一列中的箱和第二列中的频率
我有一些数组,我希望使用加法广播到一个数组,我知道可以简单地这样做:
a = numpy.array([1,2,3])
b = numpy.array9[4,5,6])
sum = a + b
print(sum)
[5,7,9]
Run Code Online (Sandbox Code Playgroud)
但是,我不能像在这个简单的例子中那样对它进行硬编码,因为我将使用不同数量的输入多次运行我的脚本,因此每次都会有不同数量的数组.有时,我可能有a和b,但有时我可能有a,c和d但不是b等.
因此,使用循环我将我所拥有的数组附加到列表中,这样我最终得到的结果如下:
newlist = [array([1,2,3,...5,4,3]),
array([5,7,2,...4,6,7]),
array([3,6,2,...4,5,9])]
Run Code Online (Sandbox Code Playgroud)
在'newlist'中从数组中获取单个数组的最pythonic方法是什么,这是在其中添加数组,这样(来自newlist):
sum = [8,15,7,...14,15,19]
Run Code Online (Sandbox Code Playgroud)
阵列都是相同的形状.
我希望找到一些高斯平滑数据中的峰值.我已经研究了一些可用的峰值检测方法,但它们需要一个输入范围来搜索,我希望它比这更加自动化.这些方法也适用于非平滑数据.由于我的数据已经过平滑,我需要一种更简单的方法来检索峰值.我的原始数据和平滑数据如下图所示.
从本质上讲,是否有一种pythonic方法从平滑数据数组中检索最大值,以便像数组一样
a = [1,2,3,4,5,4,3,2,1,2,3,2,1,2,3,4,5,6,5,4,3,2,1]
Run Code Online (Sandbox Code Playgroud)
会回来:
r = [5,3,6]
Run Code Online (Sandbox Code Playgroud) 我有一些数据,我从一个h5文件读取作为一个numpy数组,我正在进行一些分析.对于上下文,数据绘制光谱响应曲线.我正在索引数据(以及我为x轴做的后续数组)以获取特定值或值范围.我没有做任何复杂的事情,即使是我正在做的小数学也是非常基础的.但是,我在许多地方收到以下警告错误
"VisibleDeprecationWarning:布尔索引与维度0的索引数组不匹配;维度为44但对应的布尔维度为17"
即使我检查它时输出的结果是正确的.
有人可以解释这个警告意味着什么,我是否需要比现在更关注它?
我不确定示例代码会对此有所了解,但看到它是我索引和切片数组时发生的警告,无论如何都是这样的:
data = h5py.File(file,'r')
dset = data['/DATA/DATA/'][:]
vals1 = dset[0]
AVIRIS = numpy.linspace(346.2995778, 2505.0363678, 432)
AVIRIS1 = AVIRIS[vals1>0]
AVIRIS1 = AVIRIS[vals1<1]
Run Code Online (Sandbox Code Playgroud) 我有代表多个数据点高度的值,例如:
arr = np.array([1.0,1.2,1.6,2.3,2.2,2.6,2.8,2.2,3.7,3.3......7.1,7.7,7.3,7.9,7.5,7.3,8.2,9.9,9.3,9.5,10.0,10.2])
Run Code Online (Sandbox Code Playgroud)
与这些相关的是它们区域的另一个数组:
arr2 = np.array([50,30,25,21,36,87,54,34,67,43,21,45,......25,46,78,42])
Run Code Online (Sandbox Code Playgroud)
arr 和 arr2 具有相同的形状。
我可以使用以下方法从 arr 获取直方图:
np.hist(arr,bins=11,range=(0,11))
Run Code Online (Sandbox Code Playgroud)
这给了我每个 bin 的计数,但我想要的是每个 bin 的总面积(来自 arr2)。
例如,对于高度 >=1 和 <2,我想要总面积,在本例中为:
50+30+25 = 105
Run Code Online (Sandbox Code Playgroud)
是否有一个函数或Pythonic方法可以从arr2中获取属于arr创建的垃圾箱中的总数?
我有一些正态分布的数据,并且已经装有pdf。但是,我想从数据集中获得给定值的可能性。据我了解,这是x值所在的pdf下bin的区域。是否有一个numpy或scipy.stats函数来生成此?我已经看过了,但是要么我没看到它,要么是我缺乏理解使我退缩了。到目前为止,我有:
import h5py
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.mlab as mlab
import scipy.stats as stats
import numpy
import math
a = 'data.h5'
f = h5py.File(a,'r')
dset = f['/DATA/DATA/']
values = dset[...,0]
Run Code Online (Sandbox Code Playgroud)
然后,我可以生成此数据的直方图,并为其拟合pdf:
n, bins, patches = plt.hist(values, 50, normed=1)
mu = np.mean(values)
sigma = np.std(values)
plt.plot(bins, mlab.normpdf(bins, mu, sigma))
plt.show()
Run Code Online (Sandbox Code Playgroud)
我可以检索给定x值的f(x)(在这种情况下为0.65)
print(stats.norm.pdf(0.65, np.mean(mb1), np.std(mb1)))
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我从中产生我的可能性吗?
我已经将输出的直方图附加了pdf。

我对numpy数组相当新,并且在将一个数组与另一个数组进行比较时遇到了问题.
我有两个数组,这样:
a = np.array([1,2,3,4,5])
b = np.array([2,4,3,5,2])
Run Code Online (Sandbox Code Playgroud)
我想做类似以下的事情:
if b > a:
c = b
else:
c = a
Run Code Online (Sandbox Code Playgroud)
所以我最终得到一个数组c = np.array([2,4,3,5,5]).
否则,这可以被认为是取两个数组的每个元素的最大值.
但是,我遇到了错误
ValueError: The truth value of an array with more than one element is ambiguous.
Use a.any() or a.all().
Run Code Online (Sandbox Code Playgroud)
我尝试过使用这些,但我不确定它是否适合我想要的东西.
有人能够提出一些解决这个问题的建议吗?
我相对较新的numpy但已开始使用它来读取和写入h5文件.我有图像数据,我已经计算了一些区域统计数据,将给定区域中的每个像素值读取到h5文件中.但是,我有很多像素值(可能是数千万),并希望对这些数据进行二次采样,这样我就可以减少数据大小,但保持数据的一般分布.
我想知道是否有一种简单的方法可以对每个数组的第200个值进行采样?
我会提出我已经使用的代码但是我的代码只能读取我现有的数据 - 我完全不知道如何对它进行二次采样,所以到目前为止还没有任何显示.
谢谢
python ×7
arrays ×6
numpy ×6
h5py ×2
scipy ×2
csv ×1
distribution ×1
file-io ×1
histogram ×1
python-3.x ×1
statistics ×1
warnings ×1