使用标准Python数组,我可以执行以下操作:
arr = []
arr.append([1,2,3])
arr.append([4,5,6])
# arr is now [[1,2,3],[4,5,6]]
Run Code Online (Sandbox Code Playgroud)
但是,我不能在numpy做同样的事情.例如:
arr = np.array([])
arr = np.append(arr, np.array([1,2,3]))
arr = np.append(arr, np.array([4,5,6]))
# arr is now [1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)
我也研究过vstack,但是当我vstack在一个空阵列上使用时,我得到:
ValueError: all the input array dimensions except for the concatenation axis must match exactly
Run Code Online (Sandbox Code Playgroud)
那么如何在numpy中向空数组添加一个新行呢?
说我的图像大小为3841 x 7195像素.我想将图中的内容保存到磁盘,从而产生一个我指定的确切大小的图像(以像素为单位).
没有轴,没有标题.只是图像.我个人并不关心DPI,因为我只想指定图像在磁盘屏幕中所占的大小(以像素为单位).
我已经阅读了其他 主题,他们似乎都转换为英寸,然后以英寸为单位指定数字的尺寸,并以某种方式调整dpi.我想避免处理像素到英寸转换可能导致的精度损失.
我尝试过:
w = 7195
h = 3841
fig = plt.figure(frameon=False)
fig.set_size_inches(w,h)
ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
fig.add_axes(ax)
ax.imshow(im_np, aspect='normal')
fig.savefig(some_path, dpi=1)
Run Code Online (Sandbox Code Playgroud)
没有运气(Python抱怨宽度和高度必须都低于32768(?))
一切从我所看到的,matplotlib需要到指定的数字大小inches和dpi,但我只关心像素的数字发生在磁盘上.我怎样才能做到这一点?
澄清:我正在寻找一种方法matplotlib,而不是与其他图像保存库.
我正在建立我的numpy/scipy环境基于blas和lapack或多或少基于这个步骤.
当我完成后,如何检查,我的numpy/scipy函数是否确实使用了之前构建的blas/lapack功能?
我可以通过查找一阶导数或其他东西的零交叉来自己编写一些东西,但它似乎是一个通用的函数,可以包含在标准库中.谁知道一个?
我的特定应用是2D阵列,但通常它将用于在FFT等中查找峰值.
具体而言,在这些类型的问题中,存在多个强峰,然后是许多较小的"峰值",这些"峰值"仅由应该忽略的噪声引起.这只是例子; 不是我的实际数据:
一维峰值:
二维峰值:

峰值寻找算法将找到这些峰值的位置(不仅仅是它们的值),理想情况下会找到真正的样本间峰值,而不仅仅是具有最大值的索引,可能使用二次插值等.
通常,您只关心一些强峰,因此它们要么被选中,要么是因为它们高于某个阈值,要么是因为它们是有序列表的前n个峰值,按振幅排列.
正如我所说,我知道如何自己写这样的东西.我只是问是否有一个已知的功能或包已知可以正常工作.
更新:
我翻译了一个MATLAB脚本,它适用于1-D案例,但可能更好.
更新更新:
sixtenbe 为1-D案例创造了更好的版本.
简介:我有一个超过30 000个值的列表,范围从0到47,例如[0,0,0,0,...,1,1,1,1,...,2,2,2,2, ......,47等]是连续分布.
问题:基于我的分布,我想计算任何给定值的p值(看到更大值的概率).例如,正如您所见,0的p值接近1,较高的数值的p值趋于0.
我不知道我是否正确,但是为了确定概率,我认为我需要将我的数据拟合到最适合描述我的数据的理论分布.我认为需要某种拟合优度测试来确定最佳模型.
有没有办法在Python中实现这样的分析(Scipy或Numpy)?你能举个例子吗?
谢谢!
我似乎找不到任何进行多重回归的python库.我发现的唯一的东西只做简单的回归.我需要对几个自变量(x1,x2,x3等)回归我的因变量(y).
例如,使用此数据:
print 'y x1 x2 x3 x4 x5 x6 x7'
for t in texts:
print "{:>7.1f}{:>10.2f}{:>9.2f}{:>9.2f}{:>10.2f}{:>7.2f}{:>7.2f}{:>9.2f}" /
.format(t.y,t.x1,t.x2,t.x3,t.x4,t.x5,t.x6,t.x7)
Run Code Online (Sandbox Code Playgroud)
(以上输出:)
y x1 x2 x3 x4 x5 x6 x7
-6.0 -4.95 -5.87 -0.76 14.73 4.02 0.20 0.45
-5.0 -4.55 -4.52 -0.71 13.74 4.47 0.16 0.50
-10.0 -10.96 -11.64 -0.98 15.49 4.18 0.19 0.53
-5.0 -1.08 -3.36 0.75 24.72 4.96 0.16 0.60
-8.0 -6.52 -7.45 -0.86 16.59 4.29 0.10 0.48
-3.0 -0.81 -2.36 -0.50 22.44 4.81 0.15 0.53
-6.0 -7.01 -7.33 -0.33 …Run Code Online (Sandbox Code Playgroud) 通过pip安装scipy时:
pip install scipy
Run Code Online (Sandbox Code Playgroud)
Pip无法构建scipy并抛出以下错误:
Cleaning up...
Command /Users/administrator/dev/KaggleAux/env/bin/python2.7 -c "import setuptools, tokenize;__file__='/Users/administrator/dev/KaggleAux/env/build/scipy/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/zl/7698ng4d4nxd49q1845jd9340000gn/T/pip-eO8gua-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/administrator/dev/KaggleAux/env/bin/../include/site/python2.7 failed with error code 1 in /Users/administrator/dev/KaggleAux/env/build/scipy
Storing debug log for failure in /Users/administrator/.pip/pip.log
Run Code Online (Sandbox Code Playgroud)
我怎样才能成功建立scipy?这可能是OSX Yosemite的一个新问题,因为我刚刚升级并且之前没有安装过scipy的问题.
调试日志:
Cleaning up...
Removing temporary dir /Users/administrator/dev/KaggleAux/env/build...
Command /Users/administrator/dev/KaggleAux/env/bin/python2.7 -c "import setuptools, tokenize;__file__='/Users/administrator/dev/KaggleAux/env/build/scipy/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/zl/7698ng4d4nxd49q1845jd9340000gn/T/pip-eO8gua-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/administrator/dev/KaggleAux/env/bin/../include/site/python2.7 failed with error code 1 in /Users/administrator/dev/KaggleAux/env/build/scipy
Exception information:
Traceback (most recent call last): …Run Code Online (Sandbox Code Playgroud) 在对音频或图像阵列进行一些处理之后,需要在一个范围内对其进行标准化,然后才能将其写回文件.这可以这样做:
# Normalize audio channels to between -1.0 and +1.0
audio[:,0] = audio[:,0]/abs(audio[:,0]).max()
audio[:,1] = audio[:,1]/abs(audio[:,1]).max()
# Normalize image to between 0 and 255
image = image/(image.max()/255.0)
Run Code Online (Sandbox Code Playgroud)
是否有一个不那么详细,方便的功能方法来做到这一点?matplotlib.colors.Normalize()似乎没有相关性.
在RI中,可以通过以下方式创建所需的输出:
data = c(rep(1.5, 7), rep(2.5, 2), rep(3.5, 8),
rep(4.5, 3), rep(5.5, 1), rep(6.5, 8))
plot(density(data, bw=0.5))
Run Code Online (Sandbox Code Playgroud)

在python(使用matplotlib)中,我得到的最接近的是一个简单的直方图:
import matplotlib.pyplot as plt
data = [1.5]*7 + [2.5]*2 + [3.5]*8 + [4.5]*3 + [5.5]*1 + [6.5]*8
plt.hist(data, bins=6)
plt.show()
Run Code Online (Sandbox Code Playgroud)

我也尝试了normed = True参数,但除了试图将高斯拟合到直方图之外,我无法得到任何其他参数.
我最新的尝试是围绕scipy.stats和gaussian_kde,根据网站上的例子,但我一直不成功至今.
我想使用主成分分析(PCA)来降低维数.numpy或scipy已经拥有它,还是我必须自己使用numpy.linalg.eigh?
我不只是想使用奇异值分解(SVD),因为我的输入数据是相当高维的(~460维),所以我认为SVD比计算协方差矩阵的特征向量慢.
我希望找到一个预制的,已调试的实现,它已经为何时使用哪种方法做出了正确的决定,并且可能做了其他我不了解的优化.
python ×10
scipy ×10
numpy ×7
matplotlib ×2
statistics ×2
arrays ×1
blas ×1
distribution ×1
fft ×1
lapack ×1
pca ×1
r ×1