小编The*_*tor的帖子

循环遍历ndarray的所有元素

In [6]: a = np.array([[1,2,3,4],[5,6,7,8]])

In [7]: b = a

In [8]: a[0]
Out[8]: array([1, 2, 3, 4])

In [9]: a[0][0]
Out[9]: 1
Run Code Online (Sandbox Code Playgroud)

但是我想使用zip和循环a,b然后a[0][0]跟着,a[0][1]直到我到达a[1][3].

当我尝试以下内容时:

In [11]: for i,j in zip(a,b):
    ...:     print i[0][0]
    ...:     
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-11-8a9c71fab781> in <module>()
      1 for i,j in zip(a,b):
----> 2     print i[0][0]
      3 

IndexError: invalid index to scalar variable.
Run Code Online (Sandbox Code Playgroud)

我想获得a[0][0] = 1,随后a[0][1] = …

python for-loop numpy

2
推荐指数
1
解决办法
574
查看次数

将条件应用于python列表

我有一个包含两列的文本文件.我们打电话给他们r and xi,我用它们加载它们r,xi = numpy.loadtext

 r         xi
2.5      2.510891
7.5     -0.436541
12.5     0.576983
17.5     0.377067
22.5     0.19648
27.5    -0.003876
32.5     0.117554
37.5     0.136895
42.5     0.261832
47.5    -0.08984
Run Code Online (Sandbox Code Playgroud)

我知道如何删除所有负值xi.我用xi = [i for i in xi if i>0]它给了我所有的正面价值.

我现在如何删除相应的r值?

在上面的例子中,r和xi的第二行应该被删除xi = -0.4,依此类推.

python list conditional-statements

1
推荐指数
2
解决办法
132
查看次数

按FITS文件中多列中的值聚合表行

我有一个包含许多列的FITS文件.该文件的简化示例的一部分如下所示:

    A      B      C
   100     1      90
   100     2      90
   100     3      90
   100     4      90
   211     40     70
   211     41     70
   211     42     70
   211     43     70
   211     44     70
Run Code Online (Sandbox Code Playgroud)

如果您注意到这里,A和C列的前四行是相同的,但B列的变化范围是1到4.然后A和C列的下5个值相同,但B列的变化范围是40到44.

我想做的是,写一个程序,创建一个这样的文件:

   A      B     C
  100     4     90
  211     5     70
Run Code Online (Sandbox Code Playgroud)

也就是说,B列应包含A列和C列相同的值的数量!

我想知道在Python中如何做到这一点.它不一定需要处理FITS文件,如果有一些例程无法在FITS文件中使用,我也可以将其转换为ASCII格式.

到目前为止我尝试了什么:

我遇到了一个被调用的例程Collections,它有一个子例程,它调用Counter列表中相等的值并返回它们.

我试过了:

import collections
counter = collections.Counter(a)
counts = counter.values()
Run Code Online (Sandbox Code Playgroud)

但这只能给我A列中相同的值.有人能告诉我如何使用这个例程将这些值与C列进行比较吗?

python fits pyfits

1
推荐指数
1
解决办法
134
查看次数

Numpy附加到一个空数组

第一例:

>>> import numpy as np
>>> x=np.array(0)
>>> x=np.append(x,1)
>>> x
array([0, 1])
Run Code Online (Sandbox Code Playgroud)

x包含2个元素.这是为什么 ?!

第二个案例:

>>> x=np.array([])
>>> x=np.append(x,1)
>>> x
array([ 1.])
Run Code Online (Sandbox Code Playgroud)

x 正如预期的那样包含1个元素.

np.array(0)和之间有什么区别np.array([])

python arrays numpy

1
推荐指数
1
解决办法
4142
查看次数

如何在python中拟合非线性数据

如何适应非线性数据的使用scipy.optimize import curve_fitPython使用以下3种方法:

  1. 高斯。
  2. 洛伦兹拟合。
  3. 朗缪尔适合。

我只能从我的数据文件中链接和绘图。

from matplotlib import pyplot as plt
from matplotlib import style
import numpy as np
import pylab
from scipy.optimize import curve_fit
style.use('ggplot')
data = np.genfromtxt('D:\csvtrail3.csv', delimiter=',', skiprows=1)
x=data[:,0]
y=data[:,1]
data.fit_lorentzians()
plt.plot(x, y)
plt.title('Epic chart')
plt.ylabel('Y Axis')
plt.xlabel('X Axis')
plt.show()
Run Code Online (Sandbox Code Playgroud)

请建议我如何为该数据归档该行。我不想直接合身。我想要平滑的配合。

python matplotlib curve-fitting scipy

1
推荐指数
1
解决办法
1937
查看次数

在图例中使用代理艺术家,matplotlib,Python

这是我的代码片段:

fig2 = plt.figure(figsize=(8,6))
ax1 = fig2.add_subplot(111)
ax1.scatter((logngal),(logm200),c='r',label='$0.0<z<1.0$')
ax1.plot((logngal),(curve_y_1),'y',linewidth=2,label='$slope=%s \pm %s$'%(slope1,slope1_err))


ax1.fill_between(x_pred, lower, upper, color='#888888', alpha=0.5)
p1 = mpatches.Rectangle((0, 0), 1, 1, fc="#888888",alpha=0.5)
ax1.legend([p1],['$1\sigma\/confidence\/limts$'])

fig2.show()
Run Code Online (Sandbox Code Playgroud)

当我执行上述操作时,我只看到$1\sigma\/confidence\/limts$了图例中提到的内容.

然而,你可以看到,我也呼吁label='$0.0<z<1.0$',并label='$slope=%s \pm %s$'%(slope1,slope1_err)ax1.scatterax1.plot分别.

这不会在图例中绘制.

如何在图例中添加以上三个标签?

python label matplotlib legend

1
推荐指数
1
解决办法
2367
查看次数

用反转替换矩阵的所有元素

我有一个简单的问题,我无法弄清楚如何解决它.

这是一个矩阵:A = np.array([[1,0,3],[0,7,9],[0,0,8]]).

我想找到一种快速的方法,用它们的反转来替换这个矩阵的所有元素,当然不包括零元素.

我知道,感谢Stackoverflow的搜索引擎,如何用条件替换给定值的元素.相反,我不知道如何根据以前的元素替换元素(例如平方元素,反转等)

python numpy matrix python-2.7

1
推荐指数
1
解决办法
87
查看次数

Python if和else打印条件

如果整数可被3整除,则打印"Hi"

如果它被7整除,则打印"Bye"

如果可以被3和7整除,请打印"HiBye"

截至目前我已经尝试过:

for i in range(1,100):
    if i % 3 == 0:
        print "Hi"
    if i % 7 == 0:
        print "Bye"
    if i % 3 == 0 and i % 7 == 0:
        print "HiBye"
    else: 
        print i
Run Code Online (Sandbox Code Playgroud)

但我的数字是重复的.即这是我得到的输出.

1
2
Hi
3
4
5
Hi
6
Bye
7
8
Hi
9
10
11
Hi
12
13
Bye
14
Hi
15
16
17
Hi
18
19
20
Hi
Bye
HiBye
Run Code Online (Sandbox Code Playgroud)

如您所见,3再次重复.我认为错误在于

else:
    print i
Run Code Online (Sandbox Code Playgroud)

声明

python if-statement conditional-statements

1
推荐指数
1
解决办法
5805
查看次数

Matplotlib 1.3.1 中的数学表达式

matplotlib.pyplot我正在尝试在1.3.1 版本中编写数学表达式

>>> import matplotlib
>>> print matplotlib.__version__
    1.3.1
Run Code Online (Sandbox Code Playgroud)

不起作用的代码片段是

plt.scatter(np.log10(r1),np.log10(xi1),c='red',label='$\xi$(r) M$_{200}$>13.4')
plt.plot(np.log10(r1),np.log10(curve_y_1),'--',label='fit M200>13.4')

plt.text(0.5,-1.6,'0.0<z<1.0',fontsize=15,color='c')
plt.text(0.5,-1.8,'r$_0$ = %g' % p1_1,fontsize=13,color='r')
plt.text(0.5,-2.0,'$\gamma$ = %g' % p1_2,fontsize=13,color='r')
Run Code Online (Sandbox Code Playgroud)

错误的整个回溯是:

In [55]: %run correlation_fit_compare.py
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/usr/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc in execfile(fname, *where)
    202             else:
    203                 filename = fname
--> 204             __builtin__.execfile(filename, *where)

ValueError: invalid \x escape
Run Code Online (Sandbox Code Playgroud)

Matplotib网站提到,$and中包含的任何内容都\应该给我所需的表达式。他们的例子之一是 $\alpha$ ,它给了他们“数学”阿尔法。

谁能告诉我如何在我的标签中写入 \xi ?

编辑:已发布整个 plt 代码和整个回溯

python syntax matplotlib

0
推荐指数
1
解决办法
1315
查看次数

迭代多个数组来执行任务?

我有9个数组,每个数组包含19个值.

让我们说它们a1,a2,a3,a4,a5,a6,a7,a8,a9(每个a1,a2 ... a9每个包含19个值)并让我们称它们为a数组.

我还有9个数组,每个数组包含19个值.

假设它们是b1,b2,b3,b4,b5,b6,b7,b8,b9(每个b1,b2 ... b9各包含19个值),让我们称它们为b数组.

我现在想采取每个的第一个值 a数组每个的第一个值 b阵列,分化他们(a/b),这将给我一个新的阵列,假设a/b有19个值.然后我使用计算这19个值的标准差numpy.std.

然后我想再次遍历这些数组,但这次是每个数组的第二个值,依此类推,直到最后一个(第19个)值并执行上述操作.

如果我只用了2门阵列(比如a1b1)我可以用zip这样的:

div_array = [] # The empty array that will have the divided values
for a,b in zip(a1,b1):
    div = a/b
    div_array.append(div)

std = np.std(div_array)
Run Code Online (Sandbox Code Playgroud)

如何在我冗长的情况下重复上述内容?

编辑:

我最终需要19个不同的标准偏差,即我为第一个值计算它,然后计算第二个值,依此类推.

python arrays iteration numpy

0
推荐指数
1
解决办法
973
查看次数

在另一个函数中访问函数内部的Python变量

假设我有一个功能:

func1():
    do something
    a,b = somevalues,somevalues
Run Code Online (Sandbox Code Playgroud)

现在让我们说我有另一个功能:

func2():
    do something
Run Code Online (Sandbox Code Playgroud)

我现在想现在使用a,bfunc2()其内部进行计算func1().

我试过用

func1():
    do something
    a,b = somevalues, somevalues
    func1.a = somevalues
    func1.b = somevalues

func1()
func1.a
Run Code Online (Sandbox Code Playgroud)

但是使用这个,我必须每次运行func1()才能使用a,b.

func1()还会创建一些情节并计算a,b.

那么可以a,bfunc2()不打电话的情况下使用func1()吗?

python variables function python-2.7

0
推荐指数
1
解决办法
61
查看次数

Python 通过 for 循环将值附加到从函数返回的列表中

我有一个功能:

def function(x,y):
    do something
    print a,b
    return a,b
Run Code Online (Sandbox Code Playgroud)

现在我使用 for 循环,例如:

for i in range(10,100,10):
    function(i,30)
Run Code Online (Sandbox Code Playgroud)

a,b它通过 for 循环打印给定输入值的值。a,b如果我说,它也会返回,function(10,30)例如:

Out[50]: (0.25725063633960099, 0.0039189363571677958)
Run Code Online (Sandbox Code Playgroud)

我想将通过 for 循环a,b为不同输入参数获得的值附加到两个空列表。(x,y)

我试过

for i in range(10,100,10):
    list_a,list_b = function(i,30)
Run Code Online (Sandbox Code Playgroud)

list_alist_b仍然是空的。

编辑:

我也尝试过:

list_a = []
list_b = []
for i in range(10,100,10):
    list_a.append(function(i,30)[0])
    list_b.append(function(i,30)[1])
Run Code Online (Sandbox Code Playgroud)

list_alist_b都是空的!

我不明白的是,当我打电话时

function(10,30)[0]

例如,它输出一个值!但为什么我无法将其附加到列表中?

这是一些人询问的完整功能。

def function(N,bins):
    sample = np.log10(m200_1[n200_1>N]) # can be …
Run Code Online (Sandbox Code Playgroud)

python for-loop function list append

0
推荐指数
1
解决办法
8025
查看次数