numpy.random.shuffle(x)
和之间有什么区别numpy.random.permutation(x)
?
我已经阅读了doc页面,但是当我想随机改组数组元素时,我无法理解两者之间是否存在任何差异.
更确切地说,假设我有一个数组x=[1,4,2,8]
.
如果我想生成x的随机排列,那么shuffle(x)
和之间的区别是permutation(x)
什么?
我想在同一个散点图上绘制多个数据集:
cases = scatter(x[:4], y[:4], s=10, c='b', marker="s")
controls = scatter(x[4:], y[4:], s=10, c='r', marker="o")
show()
Run Code Online (Sandbox Code Playgroud)
以上仅显示最新的 scatter()
我也尝试过:
plt = subplot(111)
plt.scatter(x[:4], y[:4], s=10, c='b', marker="s")
plt.scatter(x[4:], y[4:], s=10, c='r', marker="o")
show()
Run Code Online (Sandbox Code Playgroud) 我可以访问numpy和scipy,并希望创建一个简单的数据集FFT.我有两个列表,一个是y值,另一个是y值的时间戳.
将这些列表提供给scipy或numpy方法并绘制结果FFT的最简单方法是什么?
我查了一些示例,但它们都依赖于创建一组具有一定数量的数据点和频率等的假数据,并没有真正展示如何使用一组数据和相应的时间戳来实现它.
我尝试过以下示例:
from scipy.fftpack import fft
# Number of samplepoints
N = 600
# sample spacing
T = 1.0 / 800.0
x = np.linspace(0.0, N*T, N)
y = np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x)
yf = fft(y)
xf = np.linspace(0.0, 1.0/(2.0*T), N/2)
import matplotlib.pyplot as plt
plt.plot(xf, 2.0/N * np.abs(yf[0:N/2]))
plt.grid()
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是当我将fft的参数更改为我的数据集并绘制它时,我得到了非常奇怪的结果,看起来频率的缩放可能会关闭.我不确定.
这是我试图FFT的数据的pastebin
http://pastebin.com/0WhjjMkb http://pastebin.com/ksM4FvZS
当我在整个事情上做一个fft时,它只有一个零的巨大尖峰而没有别的
这是我的代码:
## Perform FFT WITH SCIPY
signalFFT = fft(yInterp)
## Get Power Spectral Density
signalPSD = np.abs(signalFFT) ** 2
## …
Run Code Online (Sandbox Code Playgroud) 如何在我的系统上安装SciPy?
对于NumPy部分(SciPy依赖),实际上有64位Windows的安装程序:numpy-1.3.0.win-amd64-py2.6.msi(直接下载URL,2310144字节).
运行SciPy superpack安装程序会在对话框中显示以下消息:
无法安装.需要Python 2.6版,这在注册表中找不到.
我已经安装了Python 2.6.2(并在其中安装了一个有效的Django),但我不知道任何注册表故事.
注册表项似乎已经存在:
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Python]
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore]
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6]
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\Help]
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\Help\Main Python Documentation]
@="D:\\Python262\\Doc\\python262.chm"
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath]
@="D:\\Python262\\"
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath\InstallGroup]
@="Python 2.6"
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\Modules]
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\PythonPath]
@="D:\\Python262\\Lib;D:\\Python262\\DLLs;D:\\Python262\\Lib\\lib-tk"
Run Code Online (Sandbox Code Playgroud)
到目前为止我做了什么:
步骤1
下载NumPy superpack安装程序numpy-1.3.0rc2-win32-superpack-python2.6.exe(直接下载URL,4782592字节).运行此安装程序会产生相同的消息,"无法安装.需要Python版本2.6,这在注册表中找不到.". 更新:实际上NumPy的安装程序有效 - 请参阅问题的开头.
第2步
试图以另一种方式安装NumPy.下载了zip包numpy-1.3.0rc2.zip(直接下载URL,2404011字节),以正常方式将zip文件解压缩到临时目录,D:\ temp7 \numpy-1.3.0rc2(其中setup.py和README) .txt是).然后我打开了一个命令行窗口,然后:
d:
cd D:\temp7\numpy-1.3.0rc2
setup.py install
Run Code Online (Sandbox Code Playgroud)
这运行了很长时间,还包括使用cl.exe(Visual Studio的一部分).这是一个近5000行长的 成绩单(230 KB).
这似乎有效.我现在可以用Python做到这一点:
import numpy as np
np.random.random(10)
Run Code Online (Sandbox Code Playgroud)
结果如下:
array([ 0.35667511, 0.56099423, 0.38423629, 0.09733172, 0.81560421,
0.18813222, 0.10566666, 0.84968066, 0.79472597, 0.30997724])
Run Code Online (Sandbox Code Playgroud)
第3步
下载了SciPy superpack安装程序,scipy-0.7.1rc3- win32-superpack-python2.6.exe(直接下载URL,45597175字节).运行此安装程序会导致在开头列出消息
第4步 …
我试图用python过滤嘈杂的心率信号.因为心率不应该是每分钟约220次心跳,我想过滤掉220bpm以上的所有噪音.我将220 /分钟转换为3.66666666赫兹,然后将赫兹转换为rad/s得到23.0383461 rad/sec.
采集数据的芯片采样频率为30Hz,因此我将其转换为rad/s,得到188.495559 rad/s.
在线查找了一些东西之后,我发现了一些带通滤波器的功能,我想把它变成低通.这是带通代码的链接,所以我将其转换为:
from scipy.signal import butter, lfilter
from scipy.signal import freqs
def butter_lowpass(cutOff, fs, order=5):
nyq = 0.5 * fs
normalCutoff = cutOff / nyq
b, a = butter(order, normalCutoff, btype='low', analog = True)
return b, a
def butter_lowpass_filter(data, cutOff, fs, order=4):
b, a = butter_lowpass(cutOff, fs, order=order)
y = lfilter(b, a, data)
return y
cutOff = 23.1 #cutoff frequency in rad/s
fs = 188.495559 #sampling frequency in rad/s
order = 20 #order of …
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 pip 在我的 64 位 ARMV8 板上安装 scipy。我已经安装了 scipy 所需的 openblas。所以,没有问题。当我给时pip3 install scipy --trusted-host pypi.org --trusted-host files.pythonhosted.org
,我收到错误Failed building wheel for scipy。我有 pip3 和 pip3.5,/usr/bin
其余的 pip 都在/usr/lib64/python3.5/site-packages
。所以基本上,我也有 pip。
我还尝试使用--no-binary
选项安装 scipy ,这是网络上的答案之一。但是,它给了我同样的错误。下面是我得到的错误。
错误:
Collecting scipy
Downloading scipy-1.4.1.tar.gz (24.6 MB)
|################################| 24.6 MB 6.6 MB/s
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing wheel metadata ... done
Building wheels for collected packages: scipy
Building wheel for scipy (PEP …
Run Code Online (Sandbox Code Playgroud) 我想删除numpy.array中的选定列.这就是我做的:
n [397]: a = array([[ NaN, 2., 3., NaN],
.....: [ 1., 2., 3., 9]])
In [398]: print a
[[ NaN 2. 3. NaN]
[ 1. 2. 3. 9.]]
In [399]: z = any(isnan(a), axis=0)
In [400]: print z
[ True False False True]
In [401]: delete(a, z, axis = 1)
Out[401]:
array([[ 3., NaN],
[ 3., 9.]])
Run Code Online (Sandbox Code Playgroud)
在此示例中,我的目标是删除包含NaN的所有列.我希望最后一个命令导致:
array([[2., 3.],
[2., 3.]])
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
在scipy中,我们可以使用scipy.sparse.lil_matrix()等构造一个稀疏矩阵.但矩阵在2d.
我想知道在Python中是否存在稀疏3d矩阵/数组(张量)的现有数据结构?
ps我在3d中有很多稀疏数据,需要一个张量来存储/执行乘法.如果没有现有的数据结构,是否有任何建议来实现这样的张量?
python ×10
scipy ×10
numpy ×6
64-bit ×1
fft ×1
filtering ×1
image ×1
matplotlib ×1
permutation ×1
pip ×1
python-wheel ×1
resize ×1
shuffle ×1
windows ×1