标签: numpy

最有效的方法来反转numpy数组

信不信由你,在分析我当前的代码之后,numpy数组reversion的重复操作占用了运行时间的一大块.我现在拥有的是基于视图的常见方法:

reversed_arr = arr[::-1]
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以更有效地做到这一点,还是仅仅因为我对不切实际的numpy表现的痴迷而产生的错觉?

python numpy

253
推荐指数
4
解决办法
35万
查看次数

Python/NumPy中meshgrid的目的是什么?

有人可以向我解释meshgridNumpy功能的目的是什么?我知道它会为绘图创建某种坐标网格,但我无法真正看到它的直接好处.

我正在学习Sebastian Raschka的"Python机器学习",他正在使用它来绘制决策边界.请参见此处的输入11 .

我也从官方文档中尝试过这段代码,但是,输出对我来说并没有多大意义.

x = np.arange(-5, 5, 1)
y = np.arange(-5, 5, 1)
xx, yy = np.meshgrid(x, y, sparse=True)
z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)
h = plt.contourf(x,y,z)
Run Code Online (Sandbox Code Playgroud)

如果可能的话,请向我展示很多现实世界的例子.

python numpy mesh multidimensional-array numpy-ndarray

253
推荐指数
7
解决办法
13万
查看次数

pandas根据其他列的值创建新列

我尝试过与其他问题不同的方法,但似乎仍无法找到问题的正确答案.关键的一点是,如果这个人被算作西班牙裔,他们就不能算作别的了.即使他们在另一个种族栏目中有"1",他们仍被视为西班牙裔,而不是两个或更多种族.同样,如果所有ERI列的总和大于1,则它们被计为两个或更多种族,不能被视为独特的种族(接受西班牙裔).希望这是有道理的.任何帮助将不胜感激.

它几乎就像在每行中执行for循环一样,如果每条记录符合条件,它们将被添加到一个列表中并从原始列表中删除.

从下面的数据框中,我需要根据以下内容计算新列:

========================= CRITERIA ======================== =======

IF [ERI_Hispanic] = 1 THEN RETURN “Hispanic”
ELSE IF SUM([ERI_AmerInd_AKNatv] + [ERI_Asian] + [ERI_Black_Afr.Amer] + [ERI_HI_PacIsl] + [ERI_White]) > 1 THEN RETURN “Two or More”
ELSE IF [ERI_AmerInd_AKNatv] = 1 THEN RETURN “A/I AK Native”
ELSE IF [ERI_Asian] = 1 THEN RETURN “Asian”
ELSE IF [ERI_Black_Afr.Amer] = 1 THEN RETURN “Black/AA”
ELSE IF [ERI_HI_PacIsl] = 1 THEN RETURN “Haw/Pac Isl.”
ELSE IF [ERI_White] = 1 THEN RETURN “White”
Run Code Online (Sandbox Code Playgroud)

评论:如果西班牙裔美国人的ERI标志为真(1),那么员工被归类为"西班牙裔"

评论:如果超过1个非西班牙语ERI标志为真,则返回"两个或更多"

====================== DATAFRAME =========================== …

python numpy apply pandas

251
推荐指数
7
解决办法
37万
查看次数

SciPy与NumPy的关系

SciPy似乎在其自己的命名空间中提供了大多数(但不是全部[1])的NumPy函数.换句话说,如果有一个名为的函数numpy.foo,几乎可以肯定的是scipy.foo.大多数情况下,两者看起来完全相同,通常甚至指向同一个函数对象.

有时,他们是不同的.举一个最近出现的例子:

  • numpy.log10是一个返回NaNs为负参数的ufunc ;
  • scipy.log10 返回负参数的复数值,并且看起来不是ufunc.

同样可以说,大约log,log2logn,但不是关于log1p[2].

另一方面,numpy.exp并且scipy.exp对于相同的ufunc看起来是不同的名称.这也是真正的scipy.log1pnumpy.log1p.

另一个例子是numpy.linalg.solveVS scipy.linalg.solve.它们相似,但后者提供了一些额外的功能.

为什么明显重复?如果这是numpyscipy命名空间的批量导入,为什么行为和缺失函数的微妙差异?是否有一些总体逻辑可以帮助消除混乱?

[1] ,,numpy.min 和其他几个人都在没有同行的命名空间.numpy.maxnumpy.absscipy

[2]使用NumPy 1.5.1和SciPy 0.9.0rc2进行测试.

python numpy scipy

243
推荐指数
6
解决办法
4万
查看次数

熊猫中的轴是什么意思?

这是我生成数据帧的代码:

import pandas as pd
import numpy as np

dff = pd.DataFrame(np.random.randn(1,2),columns=list('AB'))
Run Code Online (Sandbox Code Playgroud)

然后我得到了数据帧:

+------------+---------+--------+
|            |  A      |  B     |
+------------+---------+---------
|      0     | 0.626386| 1.52325|
+------------+---------+--------+
Run Code Online (Sandbox Code Playgroud)

当我输入命令时:

dff.mean(axis=1)
Run Code Online (Sandbox Code Playgroud)

我有 :

0    1.074821
dtype: float64
Run Code Online (Sandbox Code Playgroud)

根据pandas的引用,axis = 1代表列,我期望命令的结果

A    0.626386
B    1.523255
dtype: float64
Run Code Online (Sandbox Code Playgroud)

所以这是我的问题:熊猫中的轴是什么意思?

python numpy dataframe pandas

243
推荐指数
12
解决办法
19万
查看次数

如何在pandas中获取数据帧的列切片

我从CSV文件中加载了一些机器学习数据.前两列是观察,其余列是特征.

目前,我做以下事项:

data = pandas.read_csv('mydata.csv')
Run Code Online (Sandbox Code Playgroud)

这给出了类似的东西:

data = pandas.DataFrame(np.random.rand(10,5), columns = list('abcde'))
Run Code Online (Sandbox Code Playgroud)

我想两个dataframes切片此数据框:一个包含列a,并b和包含列一个c,de.

写不出类似的东西是不可能的

observations = data[:'c']
features = data['c':]
Run Code Online (Sandbox Code Playgroud)

我不确定最好的方法是什么.我需要一个pd.Panel吗?

顺便说一句,我发现数据帧索引非常不一致:data['a']是允许的,但data[0]不是.另一方面,data['a':]不允许,但是data[0:].这是否有实际原因?如果列被Int索引,这实在令人困惑data[0] != data[0:1]

python numpy slice dataframe pandas

238
推荐指数
7
解决办法
41万
查看次数

从Numpy数组创建Pandas DataFrame:如何指定索引列和列标题?

我有一个由列表列表组成的Numpy数组,表示带有行标签和列名的二维数组,如下所示:

data = array([['','Col1','Col2'],['Row1',1,2],['Row2',3,4]])
Run Code Online (Sandbox Code Playgroud)

我希望生成的DataFrame将Row1和Row2作为索引值,将Col1,Col2作为标题值

我可以指定索引如下:

df = pd.DataFrame(data,index=data[:,0]),
Run Code Online (Sandbox Code Playgroud)

但我不确定如何最好地分配列标题.

python numpy pandas

231
推荐指数
8
解决办法
61万
查看次数

将Numpy数组保存为图像

我有一个Numpy数组类型的矩阵.我如何将其作为图像写入磁盘?任何格式都有效(png,jpeg,bmp ......).一个重要的限制是PIL不存在.

python numpy image

228
推荐指数
15
解决办法
45万
查看次数

连接两个一维NumPy数组

我在NumPy中有两个简单的一维数组.我应该能够使用numpy.concatenate连接它们.但我得到以下代码的错误:

TypeError:只能将length-1数组转换为Python标量

import numpy
a = numpy.array([1, 2, 3])
b = numpy.array([5, 6])
numpy.concatenate(a, b)
Run Code Online (Sandbox Code Playgroud)

为什么?

python arrays numpy concatenation numpy-ndarray

225
推荐指数
4
解决办法
26万
查看次数

如何在Python中实现Softmax函数

Udacity的深度学习类中,y_i的softmax只是指数除以整个Y向量的指数之和:

在此输入图像描述

哪里S(y_i)是的SOFTMAX功能y_i,并e为指数和j是否定的.输入向量Y中的列数.

我尝试过以下方法:

import numpy as np

def softmax(x):
    """Compute softmax values for each sets of scores in x."""
    e_x = np.exp(x - np.max(x))
    return e_x / e_x.sum()

scores = [3.0, 1.0, 0.2]
print(softmax(scores))
Run Code Online (Sandbox Code Playgroud)

返回:

[ 0.8360188   0.11314284  0.05083836]
Run Code Online (Sandbox Code Playgroud)

但建议的解决方案是:

def softmax(x):
    """Compute softmax values for each sets of scores in x."""
    return np.exp(x) / np.sum(np.exp(x), axis=0)
Run Code Online (Sandbox Code Playgroud)

它产生与第一个实现相同的输出,即使第一个实现显式获取每列和最大值的差异,然后除以总和.

有人可以用数学方式显示原因吗?一个是正​​确的而另一个是错的吗?

实现在代码和时间复杂性方面是否相似?哪个更有效率?

python numpy machine-learning logistic-regression softmax

219
推荐指数
10
解决办法
19万
查看次数