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] = …
我有一个包含两列的文本文件.我们打电话给他们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,依此类推.
我有一个包含许多列的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列进行比较吗?
第一例:
>>> 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([])?
如何适应非线性数据的使用scipy.optimize import curve_fit在Python使用以下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)
请建议我如何为该数据归档该行。我不想直接合身。我想要平滑的配合。
这是我的代码片段:
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.scatter和ax1.plot分别.
这不会在图例中绘制.
如何在图例中添加以上三个标签?
我有一个简单的问题,我无法弄清楚如何解决它.
这是一个矩阵:A = np.array([[1,0,3],[0,7,9],[0,0,8]]).
我想找到一种快速的方法,用它们的反转来替换这个矩阵的所有元素,当然不包括零元素.
我知道,感谢Stackoverflow的搜索引擎,如何用条件替换给定值的元素.相反,我不知道如何根据以前的元素替换元素(例如平方元素,反转等)
如果整数可被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)
声明
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 代码和整个回溯
我有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门阵列(比如a1和b1)我可以用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个不同的标准偏差,即我为第一个值计算它,然后计算第二个值,依此类推.
假设我有一个功能:
func1():
do something
a,b = somevalues,somevalues
Run Code Online (Sandbox Code Playgroud)
现在让我们说我有另一个功能:
func2():
do something
Run Code Online (Sandbox Code Playgroud)
我现在想现在使用a,b在func2()其内部进行计算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,b在func2()不打电话的情况下使用func1()吗?
我有一个功能:
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_a和list_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_a和list_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)