我的输出是结果是: 2 2 3 4 5 6 6 6 6 6 如果将python里写出程序的输出结果果放在一个数组里?

AI学习之路(6): NumPy的使用 - 推酷
AI学习之路(6): NumPy的使用
前面学习怎么样查看numpy的版本号,这才是刚刚开始,现在来开始更深入地学习一下它,否则以后会很麻烦的,更加看不懂那些例子的代码了。
一个用python实现的科学计算包。包括:
1、一个强大的N维数组对象Array;
2、比较成熟的(广播)函数库;
3、用于整合C/C++和Fortran代码的工具包;
4、实用的线性代数、傅里叶变换和随机数生成函数。
numpy和稀疏矩阵运算包scipy配合使用更加方便。NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。
NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(通常是元素是数字)。在NumPy中维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。
例如,在3D空间一个点的坐标 [1, 2, 3] 是一个秩为1的数组,因为它只有一个轴。那个轴长度为3.又例如,在以下例子中,数组的秩为2(它有两个维度).第一个维度长度为2,第二个维度长度为3.
[[ 1., 0., 0.],
[ 0., 1., 2.]]
NumPy的数组类被称作 ndarray 。通常被称作数组。注意numpy.array和标准Python库类array.array并不相同,后者只处理一维数组和提供少量功能。更多重要ndarray对象属性有:
ndarray.ndim
数组轴的个数,在python的世界中,轴的个数被称作秩
ndarray.shape
数组的维度。这是一个指示数组在每个维度上大小的整数元组。例如一个n排m列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性
ndarray.size
数组元素的总个数,等于shape属性中元组元素的乘积。
ndarray.dtype
一个用来描述数组中元素类型的对象,可以通过创造或指定dtype使用标准Python类型。另外NumPy提供它自己的数据类型。
ndarray.itemsize
数组中每个元素的字节大小。例如,一个元素类型为float64的数组itemsiz属性值为8(=64/8),又如,一个元素类型为complex32的数组item属性为4(=32/8).
ndarray.data
包含实际数组元素的缓冲区,通常我们不需要使用这个属性,因为我们总是通过索引来使用数组中的元素。
下面来学习一个小例子:
#python 3.5.3
#http://edu.csdn.net/course/detail/2592
import numpy as np
a = np.arange(15).reshape(3, 5)
print(a) #显示数组
print(a.shape) #多少行多少列
print(a.ndim) #维度
print(a.dtype.name) #元素类型名称
print(a.itemsize) #每一项的大小
print(a.size) #数组总个数
print(type(a)) #数组类型
b = np.array([6, 7, 8])
print(type(b))
输出结果如下:
====================== RESTART: D:/AI/sample/tf_1.4.py ======================
[[ 0 &1 &2 &3 &4]
[ 5 &6 &7 &8 &9]
[10 11 12 13 14]]
&class 'numpy.ndarray'&
&class 'numpy.ndarray'&
用列表来创建数组:
#python 3.5.3
#http://edu.csdn.net/course/detail/2592
import numpy as np
#使用列表创建数组
a = np.array( [2,3,4] )
#使用列表的元组来创建二维数组
b = np.array( [ (1.5,2,3), (4,5,6) ] )
#使用列表的元组来创建三维数组
c = np.array( [ (1.5,2,3), (4,5,6) , (7,8,9)] )
结果输出如下:
====================== RESTART: D:/AI/sample/tf_1.5.py ======================
[[ 1.5 &2. & 3. ]
[ 4. & 5. & 6. ]]
[[ 1.5 &2. & 3. ]
[ 4. & 5. & 6. ]
[ 7. & 8. & 9. ]]
在创建数组时,也可以指定数组元素的类型。同时,由于很多时候,并不知道值是什么,这样就需要创建一个空的数组。比如下面的例子:
#python 3.5.3
#http://edu.csdn.net/course/detail/2592
import numpy as np
#使用创建数组时指定类型
c = np.array( [ [1,2], [3,4] ], dtype=complex )
d = np.zeros( (3, 4) )
e = np.ones( (2,3,4), dtype=np.int16 )
f = np.empty( (2,3) )
结果输出如下:
====================== RESTART: D:/AI/sample/tf_1.6.py ======================
[[ 1.+0.j &2.+0.j]
[ 3.+0.j &4.+0.j]]
[[ 0. &0. &0. &0.]
[ 0. &0. &0. &0.]
[ 0. &0. &0. &0.]]
[[[1 1 1 1]
[1 1 1 1]]
[[1 1 1 1]
[1 1 1 1]]]
[[ 0. &0. &0.]
[ 0. &0. &0.]]
为了创建一些序数数组,那么使用列表就不是那么方便了,因而numpy提供创建的函数arange,它与range是相似的功能,使用如下:
#python 3.5.3
#http://edu.csdn.net/course/detail/2592
import numpy as np
#使用函数arange创建等距离的数组
a = np.arange( 10, 30, 5 )
a = np.arange( 10, 30, 1 )
a = np.arange( 10, 30, 2.2 )
结果输出如下:
====================== RESTART: D:/AI/sample/tf_1.7.py ======================
[10 15 20 25]
[10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29]
[ 10. & 12.2 &14.4 &16.6 &18.8 &21. & 23.2 &25.4 &27.6 &29.8]
可见函数arange是类似于python的range函数,通过指定开始值、终值和步长来创建一维数组,注意数组不包括终值。
如果想改变这些一维数组,比如改为多维数组,但参数的元素内容不改变:
#python 3.5.3
#http://edu.csdn.net/course/detail/2592
import numpy as np
#使用函数arange创建等距离的数组
a = np.arange( 10, 30, 5 )
a = np.arange( 10, 30, 1 )
print(a.reshape(5,4))
输出如下:
====================== RESTART: D:/AI/sample/tf_1.8.py ======================
[10 15 20 25]
[10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29]
[[10 11 12 13]
[14 15 16 17]
[18 19 20 21]
[22 23 24 25]
[26 27 28 29]]
numpy.random.rand(d0, d1, ..., dn)
产生多维指定值的随机值数组。创建一个给定类型的数组,将其填充在一个均匀分布的随机样本[0, 1)中
d0, d1, ..., dn : int, 类型可选
返回数组的大小,都应该是正的。如果没有给定类型,将要返回float类型数组。
输出: 数组, 维数 (d0, d1, ..., dn)的随机值
例子如下:
#python 3.5.3
#http://edu.csdn.net/course/detail/2592
import numpy as np
#生成随机数组
a = np.random.rand(100)
结果输出如下:
====================== RESTART: D:/AI/sample/tf_1.8.py ======================
0...2641698 & 0.0230075 & 0..
0...1020577 & 0...
0....9583813 & 0..
0.1317431 & 0.5361843 & 0....
0.1873583 & 0...1620941 & 0..6715625
0....3069319 & 0..
0.7522814 & 0...]
接着下来,我们玩玩numpy的数值数据类型转换。很多时候我们用numpy从文本文件读取数据作为numpy的数组,默认的dtype是float64。
但是有些场合我们希望有些数据列作为整数。如果直接改dtype=‘int‘的话,就会出错!原因如上,数组长度翻倍了!!!
#python 3.5.3
#http://edu.csdn.net/course/detail/2592
import numpy as np
#生成随机数组
a = np.random.rand(100)
print(a.dtype)
#改变为float32
b = a.astype(np.float32)
print(b.dtype)
结果输出如下:
====================== RESTART: D:/AI/sample/tf_1.9.py ======================
[ 0.....0089896 & 0.
0.8411643 & 0.....
0.1733354 & 0....5414772 & 0.
0.8633769 & 0.....
0...7013175 & 0...
0..3113668 & 0....
0.0656774 & 0.....
0......1403288
0.....8207419 & 0.
到这里,已经基本了解numpy的使用了。接着下来,继续学习下数组的乘法:
数组的算术运算是按元素的。新的数组被创建并且被结果填充。
&&& a = array( [20,30,40,50] )
&&& b = arange( 4 )
array([0, 1, 2, 3])
&&& c = a-b
array([20, 29, 38, 47])
array([0, 1, 4, 9])
&&& 10*sin(a)
array([ 9., -9., &7.4511316 , -2.])
array([True, True, False, False], dtype=bool)
不像许多矩阵语言,NumPy中的乘法运算符 * 指示按元素计算,矩阵乘法可以使用 dot 函数或创建矩阵对象实现(参见教程中的矩阵章节)
&&& A = array( [[1,1],
... & & & & & & [0,1]] )
&&& B = array( [[2,0],
... & & & & & & [3,4]] )
&&& A*B & & & & & & & & & & & & # elementwise product
array([[2, 0],
&&& dot(A,B) & & & & & & & & & &# matrix product
array([[5, 4],
有些操作符像 += 和 *= 被用来更改已存在数组而不创建一个新的数组。
&&& a = ones((2,3), dtype=int)
&&& b = random.random((2,3))
&&& a *= 3
array([[3, 3, 3],
[3, 3, 3]])
&&& b += a
array([[ 3., &3.8324276 , &3.0114541 ],
[ 3., &3.3039349 , &3.]])
&&& a += b & & & & & & & & & & & & & & & & &# b is converted to integer type
array([[6, 6, 6],
[6, 6, 6]])
当运算的是不同类型的数组时,结果数组和更普遍和精确的已知(这种行为叫做upcast)。
&&& a = ones(3, dtype=int32)
&&& b = linspace(0,pi,3)
&&& b.dtype.name
&&& c = a+b
array([ 1. & & & &, &2., &4.])
&&& c.dtype.name
&&& d = exp(c*1j)
array([ 0..j, -0..j,
&&& d.dtype.name
'complex128' 许多非数组运算,如计算数组所有元素之和,被作为ndarray类的方法实现
&&& a = random.random((2,3))
array([[ 0.6903007 , &0., &0.],
[ 0., &0., &0.]])
&&& a.sum()
&&& a.min()
&&& a.max()
这些运算默认应用到数组好像它就是一个数字组成的列表,无关数组的形状。然而,指定 axis 参数你可以吧运算应用到数组指定的轴上:
&&& b = arange(12).reshape(3,4)
array([[ 0, &1, &2, &3],
[ 4, &5, &6, &7],
[ 8, &9, 10, 11]])
&&& b.sum(axis=0) & & & & & & & & & & & & & &# sum of each column
array([12, 15, 18, 21])
&&& b.min(axis=1) & & & & & & & & & & & & & &# min of each row
array([0, 4, 8])
&&& b.cumsum(axis=1) & & & & & & & & & & & & # cumulative sum along each row
array([[ 0, &1, &3, &6],
[ 4, &9, 15, 22],
[ 8, 17, 27, 38]])
1. C++标准模板库从入门到精通
2.跟老菜鸟学C++
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致python怎么把循环得到的数值放到一个列表中_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
python怎么把循环得到的数值放到一个列表中
s=('a','b','c','d')for i in s:
print(x)这个代码会得到4个ASCII码,我想将这4个码求和,怎么做?
#!/bin/pythona = []for x in [1,2,3,4,5,6,7,8,9,10,11]:
a.append(x)print afor代表循环取数。append()函数代表将值插入到列表最后。
采纳率:45%
,&#39你要求和还是放到列表啊;d'=&[]&for&&)sum&,'b&#39?放入列表的话s=(&#39?求和的话直接加起来不就好;&a'i&in&s:&&&&x=ord(i)&&&&sum.append(x)&,'c'&nbsp
求和。放入列表的搞定了。但我每次加都是最后一个加。
s=('a','b','c','d')res&=&sum([ord(i)&for&i&in&s])print(res)
本回答被提问者采纳
返回值append到列表里
为您推荐:
其他类似问题
python的相关知识
等待您来回答Java题:输入1,2,3,4,5,6,7,8 八个数 按照数组编程,数到五个数跳出来,最后的输出结果是5,2,8,7,1,4,6,3_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
Java题:输入1,2,3,4,5,6,7,8 八个数 按照数组编程,数到五个数跳出来,最后的输出结果是5,2,8,7,1,4,6,3
希望给写注释,小弟刚学Java
我有更好的答案
/ 计数器int i = 0;
// 数组indexwhile(isComplete &lt,时间仓促,没有实际运行程序; &);
isComplete |= 128 &&/ 还有元素没被删除,继续循环{
/////// 记录哪一位置的元素已经被删除, 删除,此位设为1,否则是0int sequenceLength = sequence./ 找到没有被删除的元素,即当前仍然有效的元素,感谢下面评论的同学; 输入数组长度刚好是8,这是我改正后的程序;byte isComplete = 0, 8},可以利用1 byte(= 8 bit)的二进制数,
/ 标记当前位置已经被删除
counter = 0; 检查数组的第i个元素是否已经被删除,判断式返回非0,
&#47。int[] sequence = {1, 6, 7;0 && i % sequenceLength == 0)
&#47,计数器开始计数
counter++;
if(counter == 5)
System.out.print(&--&+sequence[i]+&quot, 2, 3, 4, 5,即第i个元素已经被删除
i++; 加入输入序列长度项,实现反复循环不越界int counter = 0,从头开始遍历
if(i& 数组已经遍历完一遍,从头开始遍历
if(i % sequenceLength == 0)
// 数组已经遍历完一遍; 255)// 代表isComplete的第i位已经被设置为1;
/// 下面的while循环找到第一个没有被删除的元素
while((isComplete & (128&&i)) 抱歉
这个也没有什么难的啊。不过你的这个输入时自动的还是手动输入的。
那你手动输入40次,你还真愿意啊。import java.util.Aimport java.util.Spublic class InputTest {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int count=0;
int[] arr=new int[8];
int index=0;
for(int i=0;i&40;i++){
int tmp=sc.nextInt();
if(count==4){
arr[index]=
System.out.println(Arrays.toString(arr));
}}代码还有优化空间
输出的结果是:[5, 2, 7, 4, 1, 6, 3, 8]不是[5,2,8,7,1,4,6,3]
你数数,如果是5个,我的输出结果是对的。5,2,8,7,1,4,6,3你这个的间隔是5,5,6,7,2或者10,等等。你再看看。。。
第一次是5,5被删除,第二次是2,2被删除,第三次是8,8被删除,等等,我想要的间隔一直是5,而不是你说的5,5,6,7,2或者10。间隔如果变化就和正确的结果不一样,请你运行正确的结果
没从你的问题中看出5被删除了。你是让我给你分析规律吗?另:那你这个就不是认为录入,或者认为输入一次之后,自己给排序。import java.util.ArrayLimport java.util.Aimport java.util.Cimport java.util.Limport java.util.Spublic class InputTest {
public int[] changePos(int[] arr){
List list=new ArrayList();
for(int i=0;i&arr.i++){
list.add(arr[i]);
int[] returnArr=new int[8];
int offset=0,counter=0;
int index=0;
while(true){
for(int i=0;i&list.size();i++){
counter++;
if(counter==5){
returnArr[offset]=Integer.parseInt(list.get(index).toString());
list.remove(index);
counter=0;
if(index==list.size()){
if(list.size()==0){
return returnA
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int[] arr=new int[8];
for(int i=0;i&8;i++){
arr[i]=sc.nextInt();
System.out.println(Arrays.toString(arr));
int[] arr1=new InputTest().changePos(arr);
System.out.println(Arrays.toString(arr1));
}}需要注释吗?
你这个数到五个数是什么意思 ,既然数五个数为什么输出结果会是八个数,我没明白题目啥意思
不明白你要表达的意思 。数到5跳出,为什么结果是5.2.8.7.1.4.6.3用一个数来指示数组元素的位置。这个数从1到8,满8跳回1。对8取余实现
其他1条回答
为您推荐:
其他类似问题
等待您来回答An error occurred on the server when processing the URL. Please contact the system administrator.
If you are the system administrator please click
to find out more about this error.怎么在python中输出一个列表中出现次数前十的元素_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
怎么在python中输出一个列表中出现次数前十的元素
打印列表中出现前十的元素,可以利用列表的count属性,可以计数,然后根据数量多少排序&来输出元素a&=&[1,'b','b',3,3,3,'d','d','d','d',5,5,5,5,5,'f','f','f','f','f','f',7,7,7,7,7,7,7,'h','h','h','h','h','h','h','h',9,9,9,9,9,9,9,9,9,'j','j','j','j','j','j','j','j','j','j',11,11,11,11,11,11,11,11,11,11,11]b&=&{}&&&&&&&&&&&&&&#定义空字典for&d&in&set(a):&&&&#去重复的值,set b[a.count(d)]&=&d&&&#去重后做计数,把数量和值写到字典bfor&e&in&reversed(sorted(b.keys())[-10:]):& print&e,':',b[e]&&&#排序列表键值并取后10个(数量最大的10个),翻转后打印出数量与值。
采纳率:63%
来自团队:
2,6,6,5,6,6,3,1,4,6:
d[i]=t.count(i)t=sorted(d,6,1,1,2t=[1.iteritems(),2,1,4,6,2,3,4,6]d={}for i in set(t),2,1,5,6, key=lambda x : x[1], reverse=True)j=1for i in t:
print i[0]按出现次数大小 输出,3,3
本回答被提问者和网友采纳
使用字典,将列表中的元素作为字典的键,循环列表,每次出现一次键的值加1
为您推荐:
其他类似问题
python的相关知识
等待您来回答

我要回帖

更多关于 下面程序的输出结果是 的文章

 

随机推荐